ошибка обновления с помощью php-кода

#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’]?