消息传递脚本 - 查询时不会上传文本

时间:2011-09-30 19:30:45

标签: php mysql

我有一个简单的消息传递脚本,允许管理员向用户发送预定义的消息。

似乎阻止查询完成的两个字段是主题和正文 - 数据库中的格式都是'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')");

我已经看过一些关于消息传递脚本的教程,它们似乎都没有我错过的任何其他因素。

非常感谢任何帮助。

非常感谢提前。

2 个答案:

答案 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())有助于捕获这些错误。如果你从一开始就这样做了,你就会立即看到有问题。