PHP - MySQL - INSERT INTO不执行

时间:2014-10-10 18:10:10

标签: php mysql sql sql-insert

我遇到了问题...由于某些原因,我的MySQL查询无法执行。

查询:

$sql = mysql_query("INSERT INTO `users` (`username`,`password`,`first_name`,`last_name`,`email`,`rank`,`active`) VALUES (`$username`,`$encryptedPassword`,`$first_name`,`$last_name`,`$email`,`member`,`0`)");

我不知道为什么它不起作用:(没有一个值是null而且我没有收到任何错误。

3 个答案:

答案 0 :(得分:4)

您正在为VALUES使用反引号

(`$username`,`$encryptedPassword`,`$first_name`,`$last_name`,`$email`,`member`,`0`)

用单引号替换它们。

('$username','$encryptedPassword','$first_name','$last_name','$email','member','0')

使用or die(mysql_error())mysql_query()会发出错误信号。


旁注:

考虑使用mysqli with prepared statementsPDO with prepared statements

  • 他们更安全。

以防万一:

error reporting添加到文件的顶部,这将有助于在生产测试期间。

error_reporting(E_ALL);
ini_set('display_errors', 1);
  • 如果您还没有这样做。

洞察 (此处已提及,但已将其删除并重新添加)

我注意到你正在为大多数值使用变量。如果是这种情况,请确保您要输入单词member而不是$member及其匹配值。我之前见过它(只是检查)。

使用错误检查/报告将告诉您是否有任何未定义的变量以及mysql_error()

答案 1 :(得分:1)

使用通常的',而不是`来引用值。

答案 2 :(得分:1)

SQL中的字符串文字用单引号(')表示。反引号保留用于标识符(列,表等):

$sql = mysql_query("INSERT INTO `users` (`username`,`password`,`first_name`,`last_name`,`email`,`rank`,`active`) VALUES ('$username','$encryptedPassword','$first_name','$last_name','$email','member',0)");