2009-11-02 80 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);