php – MySQL查询由于保留关键字而失败?

编辑:如果你是从谷歌来的,这个问题是因为int是PHP中的保留关键字.请参阅已接受答案的结尾.

我还在学习PHP / MysqL,对于我的生活,我无法弄清楚我的代码有什么问题.

我正在尝试从html页面获取一些数据并将其添加到我的数据库中的表中.我正在使用GET请求传递数据,然后使用PHP的$_GET检索它.

我已经测试了这个,并且变量被正确传递给PHP脚本,但它们没有出现在数据库中.脚本死在这一行:
MysqL_query($query)或die(‘data entry Failed’);

$database='a9293297_blog';
$con = MysqL_connect('MysqL2.000webhost.com','my_username','my_password');
MysqL_select_db($database,$con) or die('Failed to connect to database');

$username = $_GET['username'];
$password = $_GET['password'];
$charName = $_GET['charName'];
$sex = $_GET['sex'];
$class = $_GET['class'];
$race = $_GET['race'];
$str = $_GET['str'];
$sta = $_GET['sta'];
$dex = $_GET['dex'];
$int = $_GET['int'];
$cha = $_GET['cha'];

$query = "INSERT INTO Players (username, password, charName, sex, class, race, str, sta, dex, int, cha)
VALUES ('" . $username . "', '" . $password . "', '" . $charName . "', '" . $sex . "', '" . $class . "', '" . $race . "', '" . $str . "', '" . $sta ."', '" . $dex . "', '" . $int . "', '". $cha . "')";

MysqL_query($query) or die('data entry Failed'); // Fails here
MysqL_close($con);

解决方法:

要更好地了解SQL查询错误,请使用mysql_error()

MysqL_query($query) or die(MysqL_error());

使用mysql_real_escape_string()转义字符串变量.示例:

$query = "INSERT INTO MYTABLE(MYFIELD) VALUES ('".MysqL_real_escape_string($myVar)."');

编辑

int似乎是一个保留的MysqL关键字.用反引号逃脱它:

INSERT INTO Players (username, password, ..., str, sta, dex, `int`, cha) ...

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...