2012-05-17 7 views
1

В настоящее время я работаю над кодом, чтобы просто обновлять строки по одному в таблице базы данных. Однако только строки с нечетными номерами обновляются, а четные строки не обновляются.Почему мой запрос только обновляет строки с нечетными номерами

Вот мой PHP:

<?php 
require_once ("connect.php"); 
$id = $_GET['id']; 
$title = $_POST['title']; 
$description = $_POST['description']; 

$query = "UPDATE tbl_shows SET shows_title='$title', shows_description='$description' WHERE shows_id='$id'"; 
$result = mysql_query($query); 

if ($result) { 
    header ("Location: shows.php?=success"); 
    exit(); 
} else { 
    echo "<p>Still doesn't work</p>"; 
     exit(); 
} 
?> 

Я напечатал мой $ ID, $ название и $ Описание переменных и все они выглядят, как они должны.

Как изменить код, чтобы обновить как четные, так и нечетные ряды.

Редактировать:

Повторяя $ ID, $ название, описание и $ $ запрос показать то же самое для обоих четных и нечетных строк.

Что mysql_error() выходы:

У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует версии сервера MySQL для корректного синтаксиса использовать вблизи (часть данных из строки появляется здесь и отсекает ошибку) WHE»в строке 1

запрос:

UPDATE tbl_shows SET shows_title='Title is here', shows_description='Description is here' WHERE shows_id='2' 
+3

** предупреждение ** код имеет уязвимости SQL-инъекции. –

+0

Вы получаете какие-либо ошибки? Что произойдет, если вы выполните echo $ id и $ query для своих нечетных нумерованных запросов? – j08691

ответ

1

У вас в коде есть легкие уязвимости в sql-инъекции, что, вероятно, вызывает непреднамеренную ошибку, которую вы видите. Например, если $ описание выглядит следующим образом:

Best movie ever!!! You're going to love it! 

... тогда ваш сцепляются запрос будет выглядеть следующим образом:

UPDATE tbl_shows SET shows_title='Title is here', shows_description='Best movie ever!!! You're going to love it!' WHERE shows_id='2' 

Проблема с этим, является апостроф в you're происходит чтобы вызвать значение show_description для завершения, а остальная часть запроса больше не имеет смысла для SQL.

По крайней мере, использование mysql_real_escape_string() дезинфицировать переменные, которые вы добавить в свой запрос, а еще лучше, использовать библиотеку PDO в PHP

+1

Это исправлено, спасибо! – akari

0

Непонятно, что может привести к тому, что четные элементы не будут обновляться из того, что вы опубликовали. Я предлагаю вам использовать функцию mysql_error для отображения точного сообщения об ошибке, которое вы получаете, когда $ result является ложным. Согласно документам PHP, mysql_result возвращает false только при ошибке, поэтому это хороший признак того, что что-то странное может быть.

+0

Я использовал функцию mysql_error, и он говорит, что у меня есть синтаксическая ошибка, но она срезается на полпути, поэтому я не вижу точно, где. – akari

+0

@akiri Не могли бы вы отредактировать исходное сообщение с запросом и соответствующим сообщением об ошибке? Я думаю, это позволит нам помочь вам лучше. Ошибки MySQL почти всегда имеют elipses после ошибки и показывают только наиболее релевантную часть запроса с ошибкой. – EmmanuelG

Смежные вопросы