编辑:如果您来自Google,那么此问题是由于int
是PHP中的保留关键字导致的。请参阅已接受答案的末尾。
我仍在学习PHP / MySQL,对于我自己的一生,我无法弄清楚我的代码出了什么问题。
我正在尝试从html页面中获取一些数据,并将其添加到数据库中的表中。我通过GET
请求传递数据,然后通过PHP的$_GET
检索数据。
我已经对此进行了测试,并且变量已正确传递到PHP脚本,但它们未出现在数据库中。脚本在此行结束:mysql_query($query) or 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) ...
关于php - MySQL查询由于保留关键字而失败?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53156411/