#php #mysql #sql-update #syntax-error
#php #mysql #sql-обновление #синтаксическая ошибка
Вопрос:
У меня есть 2 таблицы, поврежденная и назначенная. В approve у меня есть поле damage_id, а в таблице damage у меня есть поле damageid. Я беру damageid с другой страницы с помощью GET и использую простую форму для получения идентификатора назначения, чтобы дать пользователю возможность связать ущерб с назначениями.
<?php
session_start();
include('dbConfig.php');
if(isset($_POST['submit'])){
$id5=$_GET['damageid'];
$apid=$_POST['apid'];
$result=mysql_query("UPDATE appoint SET damage_id=$id5 WHERE id=$apid") or die("QUERY error: ".mysql_error());
echo"Row updated.";
mysql_close();
}
?>
<form action="" method="post">
<table>
<tr>
<td>ID APPOINTMENT</td>
<td><input name="apid" type="text"> </td>
</tr>
<tr>
<td><input type="submit" name="submit" value="submit"></td>
</tr>
</table>
</form>
В результате возникает такая ошибка: «Ошибка ЗАПРОСА: у вас ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘WHERE id= 2’ в строке 1»
Есть идеи?
Комментарии:
1. Ваше входное значение
id5
— это строка, верно? И, кстати, ваш код широко открыт для SQL-инъекций. Всегда избегайте пользовательского ввода.2. Похоже, что
$id5
пусто. можете ли вы это проверить.3. id5 — это int — это damageid, который я беру с другой страницы!
Ответ №1:
Ваш запрос неверен.
Измените это:
$result = mysql_query("UPDATE appoint SET damage_id=$id5 WHERE id=$apid") or die("QUERY error: ".mysql_error());
Для:
$result = mysql_query("UPDATE appoint SET damage_id = '$id5' WHERE id = '$apid'") or die("QUERY error: ".mysql_error());
Кроме того, как вы уже заявили, вы получаете свой $_GET
параметр с другой страницы как <a href="editdamage.php?id='.$row['damageid'].'">
,
Измените это:
$id5=$_GET['damageid']
к этому:
$id5 = $_GET['id']
С другой стороны, вам лучше создавать свои запросы с помощью PDO
или MySQLi
.
Комментарии:
1. я делаю так, что он печатает обновленную строку, но это ничего не меняет!
2. вы уверены, что
$id5
значение не пустое, можете ли вы добавитьvar_dump($id5)
перед запросом и вставить результат сюда?3. значение равно НУЛЮ, но на другой странице у меня есть эта часть кода: print ‘<td> <a href=»editdamage.php?id=’.$row[‘damageid’].'»> РЕДАКТИРОВАТЬ </a> </td>’;
4. измените в своем коде this
$id5=$_GET['damageid'];
на$id5=$_GET['id'];
then.5. да, и извините, что я нахожу это! и могу я спросить вас кое о чем? если у меня на совершенно другой странице $ id =’.$row [идентификатор пользователя]. например, я должен изменить свой приведенный выше код на id1 =’.row[‘damageid’]?