我不知道我的错误在这个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 =戴夫的派对)
答案 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)
请确保您已正确转义所有值。
答案 2 :(得分:1)
mysql_escape_string($data['title']);
或
mysql_real_escape_string($data['title'], $dbconn);