2017-01-07 27 views
0

У меня есть некоторая проблеманекоторые ошибки с содержанием редактирования тузд через PHP

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

У Вас есть ошибка в вашем SQL синтаксиса; в руководстве, соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать возле «мигание =„ASD“WHERE предложение =» 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"; 
      } 
     } 

?> 

, когда я удалить (мигает = «$ мигания») из запроса его будет сохранять и редактировать , но мне нужно это в моем проекте примечание: я изменить мигать много раз и попробовать еще имена (та же проблема)

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

Спасибо :)

+0

'bauthor = '$ bauthor',', обратите внимание на запятую. – Xorifelse

+1

это не живой сайт. Я надеюсь, что –

+0

Его TYPO, закрыть соответственно – RiggsFolly

ответ

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 с подготовленным заявлением.

+1

+1 Спасибо, что рассказывал мне об этом, так как я говорю, что сейчас я не в режиме обеспечения безопасности, я просто программирую и много раз искал ошибку в скрипте :) Большое спасибо –

+1

Я бы не использовал 'mysql_real_escape_string()' еще одна функция 'mysql_ *'. Они устарели и устарели, а 'mysql_real_escape_string()' все еще могут быть открыты для SQL-инъекции. * «Просто примените функцию mysql_real_escape_string для каждого входа, который сохранит вас». * - Нет, это не будет. См. Следующие вопросы и ответы по стеку http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string –

+1

* «Для обеспечения лучшей безопасности вы можете попробовать PDO». * - Без подготовленного заявления только PDO все еще подвержен инъекции. –