我有一个简单的消息传递脚本,允许管理员向用户发送预定义的消息。
似乎阻止查询完成的两个字段是主题和正文 - 数据库中的格式都是'text',默认设置为NULL。由于某种原因,已将相关性设置为latin1_swedish_ci。
我知道这些是错误,就像我将它们插入数据库时将它们设为NULL一样,整个查询都成功了。
按下按钮时会触发查询(故障不在此处,因为我上面的查询完全可以正常工作)。
这两个变量的定义如下:
$subject = "You have a new message!";
$body = "<a href='?page=update'>click here to see it.</a>";
使用以下mysql查询:
mysql_query("INSERT INTO message VALUES(NULL, '$user_id', '$list_id', $subject , $body, '0', '$query_date_user', '1')");
我已经看过一些关于消息传递脚本的教程,它们似乎都没有我错过的任何其他因素。
非常感谢任何帮助。
非常感谢提前。
答案 0 :(得分:1)
在$ subject和$ body
周围加上引号mysql_query("INSERT INTO message VALUES(NULL, '$user_id', '$list_id', '$subject' , '$body', '0', '$query_date_user', '1')");
谢谢马克B.事实上,他也需要逃避$ body中的单引号。
答案 1 :(得分:0)
您在$ body变量中使用单引号('
)导致语法错误。由于您在查询调用中没有任何错误处理,因此您将看不到mysql会尖叫的消息。
您的代码应为:
$subject = mysql_real_escape_string("You have a new message!");
$body = mysql_real_escape_string("<a href='?page=update'>click here to see it.</a>");
$sql = "INSERT INTO message VALUES(NULL, '$user_id', '$list_id', '$subject' , '$body', '0', '$query_date_user', '1')";
mysql_query($sql) or die(mysql_error());
请注意查询字符串中变量的引号。您不能将原始字符串插入SQL查询并期望它可以工作。
BIG注意:在开发过程中添加or die(mysql_error())
有助于捕获这些错误。如果你从一开始就这样做了,你就会立即看到有问题。