Ошибка MySQL при вставке данных поста - PullRequest
0 голосов
/ 02 ноября 2009

Я не знаю, где моя ошибка в этом запросе 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 = Dave's Party)

Ответы [ 3 ]

2 голосов
/ 02 ноября 2009

Вы хотите экранировать одинарные кавычки в строках, прежде чем вставить их в базу данных.

Возможно, вы захотите использовать mysql_real_escape_string для каждого элемента массива $data.

Например:

$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());

Кроме того, взгляните на документацию по PHP для SQL-инъекции .

1 голос
/ 02 ноября 2009
mysql_escape_string($data['title']);

или

mysql_real_escape_string($data['title'], $dbconn);
1 голос
/ 02 ноября 2009

Убедитесь, что все значения правильно экранированы.

mysql_real_escape_string

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...