2014-02-17 2 views
-3

Нужна помощь, продолжайте получать синтаксическую ошибку и не можете на всю жизнь найти ошибку. код и переменные работают для других запросов и таблиц/dbs.MYSQL PHP/синтаксис командной строки

сообщение об ошибке

Database Found! Problem updating record. MySQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET LastName='dfm', WHERE StudentID='123'' at line 2

код

 if (!empty($_POST['modify'])) 
{ 
$connection = mysqli_connect("xxxxx","xxxx","xxxxx"); 
     // Check connection 
     if (!$connection) 
    { 
     echo "Connection failed: " . mysqli_connect_error(); 
    } 
     else 
     { 
      //select table 
      $dbName="spr14_aglic006"; 
      mysqli_select_db($connection,$dbName) or die(mysqli_error()); 
      echo "Database Found! <br>"; 

Синтаксическая ошибка НИЖЕ

$query =("UPDATE students 
    SET FirstName='".$_POST['firstName']."', LastName='".$_POST['lastName']."', 
    WHERE StudentID='".$_POST['PID']."'"); 

СИНТАКСИС ОШИБКА ВЫШЕ

  $res = mysqli_query($connection,$query); 

      if ($res) 
      { 
       echo "<p>Record Updated<p>"; 
      } 
      else 
      { 
       echo "Problem updating record. MySQL Error: " . mysqli_error($connection); 
      } 
     } 

     mysqli_close($connection); 

    } 

Любая помощь?

+6

** Опасность **: ** Вы уязвимы для [атаки инъекции SQL] (http://bobby-tables.com/) **, что вам нужно [защищать] (http: //stackoverflow.fcom/questions/60174/best-way-to-prevent-sql-injection-in-php) самостоятельно. – Quentin

+0

Возможно, попробуйте без перерыва строки в вашем запросе – Ajouve

+0

Это скобки вокруг запроса? '$ query = _ (_" и '" '"_) _;' – Sam

ответ

2

запрос должен быть

$query =("UPDATE students 
    SET FirstName='".$_POST['firstName']."', LastName='".$_POST['lastName']."' 
    WHERE StudentID='".$_POST['PID']."'"); 

Вы были

SET FirstName='".$_POST['firstName']."', LastName='".$_POST['lastName']."', <-- 

ТАКЖЕ ваш запрос ПОТЕНЦИАЛ SQL Injection

Вы используете $ _POST данные непосредственно в запросе, Вместо этого используйте PDO.

+0

Спасибо MUCH !!! (im an idiot = \ lol) – XoronioX

+1

PDO не решит проблему. Подготовленные операторы/связанные аргументы будут. PDO поддерживает их, но так mysqli_ и OP уже использует mysqli_. – Quentin

+0

Да не просто PDO наверняка, конечно подготовленные заявления :-) –

1
SET LastName='dfm', WHERE StudentID='123'' 
       ^

У вас есть запятая.

+0

Просто любопытно, почему сообщество wiki? – Rikesh

+1

@Rikesh - Потому что я действительно не хотел очков для «Посмотрите, сообщение об ошибке сообщает вам, что в этом очень маленьком фрагменте есть проблема, эта запятая не имеет смысла и может даже быть опечаткой». – Quentin

+0

Спасибо МНОГО !!! (im an idiot = \ lol) – XoronioX

2

удалить запятая, которая находится перед WHERE

$query =("UPDATE students SET FirstName='".$_POST['firstName']."', LastName='".$_POST['lastName']."' WHERE StudentID='".$_POST['PID']."'"); 
+0

Спасибо МНОГО !!! (im an idiot = \ lol) – XoronioX

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