插入发布数据时出现mysql错误

时间:2009-11-02 12:43:29

标签: php mysql

我不知道我的错误在这个mysql查询中的位置

$sql = "INSERT INTO `events` ( `owner` ,  `title` ,  `tagline` ,  `location` ,  `street` ,  `citytown` ,  `startdate` ,  `enddate` ,  `active`  ) VALUES(  '{$username}' ,  '{$data[title]}' ,  '{$data['tagline']}' ,  '{$data['location']}' ,  '{$data['street']}' ,  '{$data['citytown']}' ,  '{$data['startdate']}' ,  '{$data['enddate']}' ,  '{$data['active']}'  ) "; 
mysql_query($sql) or die(mysql_error()); 

它告诉我我的语法附近有错误...然后输出我的数据的部分我有撇号

(例如:title =戴夫的派对)

3 个答案:

答案 0 :(得分:2)

在将字符串插入数据库之前,您希望在字符串中转义单引号。

您可能希望在$data数组的每个元素上使用mysql_real_escape_string

例如:

$escaped_data = array();

foreach ($data as $key => $val) {
    $escaped_data[$key] = mysql_real_escape_string($val);
}

$sql = "INSERT INTO `events` ( `owner` ,  `title` ,  `tagline` ,  `location` ,  `street` ,  `citytown` ,  `startdate` ,  `enddate` ,  `active`  ) VALUES(  '{$username}' ,  '{$escaped_data[title]}' ,  '{$escaped_data['tagline']}' ,  '{$escaped_data['location']}' ,  '{$escaped_data['street']}' ,  '{$escaped_data['citytown']}' ,  '{$escaped_data['startdate']}' ,  '{$escaped_data['enddate']}' ,  '{$escaped_data['active']}'  ) "; 
mysql_query($sql) or die(mysql_error());

顺便说一下,看一下SQL injection的PHP文档。

答案 1 :(得分:1)

请确保您已正确转义所有值。

mysql_real_escape_string

答案 2 :(得分:1)

mysql_escape_string($data['title']);

mysql_real_escape_string($data['title'], $dbconn);