2009-11-02 84 views
0

我不知道我的错误是在此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()); 

它告诉我,我有在附近的语法错误......然后我的输出数据的一部分,其中i有撇号

(例如:标题=戴维党)

回答

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
mysql_escape_string($data['title']); 

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