Обновление базы данных не работает - PullRequest
0 голосов
/ 08 марта 2011

Может кто-нибудь сказать мне, почему это не работает?Все идет хорошо, но когда я нажимаю "Отправить", база данных не обновляется.

$row = mysql_fetch_array($sql);
$title = $row['title'];
$content = $row['content'];
$author = $row['author'];
$author_email = $row['author_email'];
$cat = $row['category'];
$date = $row['date'];
$id = $row['id'];


$form = "<tr><td>$id
    <form action='edit.php' method='post'>
    <input type='text' value='$title' name='title'><br>
    <textarea name='content'>$content</textarea><br>
    <input type='submit' name='submit'>
        </td></tr>";

$ptitle = htmlentities($_POST['title']);
$pcontent = htmlentities($_POST['content']);

if($_POST['submit']){
    if ($ptitle && $pcontent){
        mysql_query("UPDATE blogdata SET id='$id', title='$ptitle', author='$author', author_email='$author_email', date='$date', category='$category', content='$pcontent' WHERE id='$id'");
    }
    else
        echo "A forms empty.";
}
else
    echo "$form";

Ответы [ 2 ]

1 голос
/ 08 марта 2011

Обратите внимание, что вам не следует использовать значения, которые были отправлены непосредственно из формы, без предварительной их проверки. Я не буду обращаться к этому здесь, но я обращусь к вашему запросу:

Вы не можете установить значение идентификатора строки, который планируете использовать в предложении WHERE; это вызывает проблему параллелизма. Ваш идентификатор строки должен быть неизменным.

Таким образом, ваш запрос должен выглядеть следующим образом (напоминание: я не исправил проблемы, связанные с безопасностью):

UPDATE blogdata SET title='$ptitle', author='$author', 
author_email='$author_email', date='$date', category='$category', 
content='$pcontent' WHERE id='$id'
0 голосов
/ 08 марта 2011

Потому что это плохо написанный код с ошибками в нем?

Вы должны использовать htmlentities, чтобы экранировать содержимое, которое вы пишете в браузер . Вы должны использовать mysql_real_escape_string для экранирования содержимого, которое вы пишете в базу данных . Ваш код должен иметь комментарии, объясняющие, что он делает. Вы должны проверить возвращаемое значение для mysql_query и опросить mysql_error, когда это необходимо. Вы не должны заключать числовые значения в ваш SQL.

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