ошибка при редактировании содержимого mysql через переполнение стека

у меня есть проблемы

я сделал свой проект, но есть проблема в нем, как

У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, которое
соответствует версии вашего сервера MySQL для правильного использования синтаксиса
около ‘blink =’ asd ‘WHERE bid =’ 1 » в строке 6
в редактируемом файле для редактирования содержания моей книги

    <?php
include("../includes/config.php");
$cuser = mysql_query("SELECT * FROM books");
$id = intval($_GET['id']);
$bname = strip_tags($_POST['bname']);
$bpic = strip_tags($_POST['bpic']);
$bdesc = strip_tags($_POST['bdesc']);
$bauthor = strip_tags($_POST['bauthor']);
$blink = strip_tags($_POST['blink']);
if(isset($_GET['edit'])){
$cuuser = mysql_fetch_object($cuser);
echo "<form action='editbook.php?edit=yes&id=".$cuuser->bid."' method='POST'>
<table>
<tr>
<td>bname : </td>
<td><input name='bname' type='text' value='".$cuuser->bname."' /></td>
</tr>
<tr>
<td>bpic : </td>
<td><input name='bpic' type='text' value='".$cuuser->bpic."' /></td>
</tr>
<tr>
<td>bdesc : </td>
<td><input name='bdesc' type='text' value='".$cuuser->bdesc."' /></td>
</tr>
<tr>
<td>blink : </td>
<td><input name='blink' type='text' value='".$cuuser->blink."' /></td>
</tr>
<tr>
<td>bauthor : </td>
<td><input name='bauthor' type='text' value='".$cuuser->bauthor."' /></td>
</tr>
<td><input name='do' type='submit' value='GO' /></td>
</table>
</form>";
}
if($_REQUEST['edit'] == 'yes'){
$uuser = mysql_query("UPDATE books SET
bname = '$bname',
bpic = '$bpic',
bdesc = '$bdesc',
bauthor = '$bauthor'
blink = '$blink'
WHERE bid='$id' ") or die(mysql_error()) ;
if(isset($uuser)){
echo "done";
}
}

?>

когда я удаляю (blink = ‘$ blink’) из запроса, он сохраняет и редактирует
но мне это нужно в моем проекте
примечание: я меняю моргание много раз и пробую другие имена (та же проблема)

и если есть другой способ редактировать содержимое MySQL через php, я буду так счастлив 🙂 что-нибудь, пусть мой проект работает правильно

Спасибо 🙂

1

Решение

Во-первых, вы пропустили запятую в своем обновлении после bauthor а также blink линия.

Во-вторых, я вижу, что вы не делали никакой обработки входных данных. Это очень уязвимо для внедрения SQL.
Также, если кто-то введет кавычки внутри входных данных, ваш запрос на сохранение также не будет выполнен.
Таким образом, вы должны исправить это тоже.
Просто применить mysql_real_escape_string Функция для каждого ввода сохранит вас для сохранения сбоя в запятой, содержащей строковые данные.

Поэтому попробуйте следующий код для быстрого исправления:

if($_REQUEST['edit'] == 'yes'){
$uuser = mysql_query("UPDATE books SET
bname = '" . mysql_real_escape_string($bname) . "',
bpic = '" . mysql_real_escape_string($bpic) . "',
bdesc = '" . mysql_real_escape_string($bdesc) . "',
bauthor = '" . mysql_real_escape_string($bauthor) . "',
blink = '" . mysql_real_escape_string($blink) . "'
WHERE bid='$id' ") or die(mysql_error()) ;
if(isset($uuser)){
echo "done";
}
}

Для лучшей безопасности вы можете попробовать PDO с подготовленным заявлением.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector