Ошибка объявления переменной $ sql

0

Я не могу понять, почему xampp дает мне ошибку

Ошибка анализа: синтаксическая ошибка, неожиданный '' (T_ENCAPSED_AND_WHITESPACE), ожидающий идентификатор (T_STRING) или переменная (T_VARIABLE) или номер (T_NUM_STRING) в C:\xampp\htdocs\Permanent\edstul.php в строке 31

Строка 31 такова:

if($_POST){

//update the record if the form was submitted
  $sql="UPDATE users SET pass='$_POST['pass']',fname='$_POST['fname']',lname='$_POST['lname']',mi='$_POST['mi']',age='$_POST['age']',course='$_POST['course']',yearlevel='$_POST['yearlevel']'
    WHERE id=" . mysql_real_escape_string($_POST['id']);

  if(mysql_query($sql)){
    //this will be displayed when the query was successful
    echo "<div>Record was edited.</div>";
  }else{
    die("SQL: " . $sql . " >> ERROR: " . mysql_error());
  }
}

Я не могу понять это. Мне очень нравится объявлять sql-синтаксис, потому что у него нет отладки.

  • 1
    Не используйте устаревший mysql_* API. use mysqli_ * `или pdo. А также используйте подготовленное заявление. Это безопаснее и намного удобочитаемее.
  • 0
    Избавьтесь от одинарных кавычек в ваших переменных $ _POST. $_POST['pass'] => $_POST[pass]
Показать ещё 8 комментариев
Теги:
web
syntax-error

1 ответ

1

У вас есть некоторые ошибки конкатенации PHP, попробуйте с этим:

$sql="UPDATE users SET pass='". $_POST['pass'] . "',
      fname='" .     $_POST['fname'] . "',
      lname='" .     $_POST['lname'] . "',
      mi='" .        $_POST['mi'] . "',
      age='" .       $_POST['age'] . "',
      course='" .    $_POST['course'] . "',
      yearlevel='" . $_POST['yearlevel'] . "'
      WHERE id=" . mysql_real_escape_string($_POST['id']);
  • 2
    и тогда у вас все еще будет проблема с SQL-инъекциями, и вы все равно будете использовать устаревшее расширение mysql_ *. Но да, это сразу исправит синтаксическую ошибку
  • 0
    Правильный ответ, но вы должны упомянуть, что OP не должен использовать функцию mysql_ *, поскольку она устарела +1

Ещё вопросы

Сообщество Overcoder
Наверх
Меню