Эта часть моего кода создает несколько запросов:
$sql = "";
$sql .= "INSERT INTO projects
(project_id, project_name, project_description, project_deadline, project_status, project_priority)
VALUES ('" . $project_id . "', '" . $name . "', '" . $description . "', '" . $final_deadline . "', '" . $status . "', '" . $priority . "');";
foreach($assignments as $assigned_user)
{
$sql .= "INSERT INTO assignments
(user_id, project_id, assigned_date)
VALUES ('" . $assigned_user . "', '" . $project_id . "', '" . time() . "');";
}
$result = mysql_query($sql) or die(mysql_error());
Однако я получаю сообщение об ошибке:
У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с назначениями INSERT INTO (user_id, project_id, assign_date) в строке 3
Однако, если я эхо $sql
, получается что-то вроде этого:
INSERT INTO projects (project_id, project_name, project_description, project_deadline, project_status, project_priority) VALUES ('7090', 'Sup :D', 'OMG!', '716770800', '1', '1');
INSERT INTO assignments (user_id, project_id, assigned_date) VALUES ('12', '7090', '1284139311');
INSERT INTO assignments (user_id, project_id, assigned_date) VALUES ('11', '7090', '1284139311');
THEN Я вручную запускаю SQL в PhpMyAdmin, он отлично работает, но почему он не работает, когда PHP выполняет его и выдает ошибку?
mysql_query
может выполнять только один запрос за раз
Попробуйте следующее:
$sql = "INSERT INTO projects
(project_id, project_name, project_description, project_deadline, project_status, project_priority)
VALUES ('" . $project_id . "', '" . $name . "', '" . $description . "', '" . $final_deadline . "', '" . $status . "', '" . $priority . "');";
$result = mysql_query($sql) or die(mysql_error());
foreach($assignments as $assigned_user)
{
$sql = "INSERT INTO assignments
(user_id, project_id, assigned_date)
VALUES ('" . $assigned_user . "', '" . $project_id . "', '" . time() . "');";
$result = mysql_query($sql) or die(mysql_error());
}
узнать SQL bro, это правила;)
$sql = "INSERT INTO assignments
(user_id, project_id, assigned_date) ";
foreach($assignments as $assigned_user)
{
$sql.= " VALUES ('" . $assigned_user . "', '" . $project_id . "', '" . time() . "') ";
}
Я надеюсь, что у вас есть все ваши переменные.
несколько запросов не поддерживаются функцией mysql_query. Проверьте mysqli:: multi_query
Я предполагаю, что функция mysql_query не позволит выполнять несколько операторов, каждый оператор должен выполняться индивидуально.
Если посмотреть на большую картинку, рассмотрите следующую публикацию: Перезапись данных в таблице MySQL. Таким образом, создание запросов путем конкатенации строк по мере того, как вы делаете это рецепт катастрофы, вы будете уязвимы к атакам SQL-инъекций и другим ошибкам. Подумайте об использовании уровня абстракции PDO вместо того, чтобы вызывать определенные функции mysql и изучать использование параметризованных запросов вместо создания строк, как вы это делаете.
Это стандартная ошибка, которую делают новички (не помогающие обильными примерами в Интернете и в книгах, дающих плохое руководство), поэтому не чувствуйте себя плохо, если вы новичок, просто имейте в виду, что вы не должны использовать этот подход в производственных системах.