2017-02-07 5 views
0

было почти год с тех пор, как мне пришлось гадать с базами данных, и, как самоучитель, у меня проблемы. Ниже приведена часть кода, который не работает, и это успешное соединение с сервером. Отсюда он не обновляется, и я не знаю, почему. В моей системе у меня есть рабочая строка соединения PDO, если вы чувствуете, что это должно быть сделано в PDO. В этот момент я топчу дыры в воздухе. Цените свое время.возникли проблемы с sql

$stmt = $conn->prepare("UPDATE bfl SET gamerid="?", name="?", age="?",location"?", email="?", console="?"WHERE team="?" "); 



$stmt->bindParam(1, $gamerid); 
    $stmt->bindParam(2, $name); 
    $stmt->bindParam(3, $age); 
    $stmt->bindParam(4, $location); 
    $stmt->bindParam(5, $email); 
    $stmt->bindParam(6, $cosole); 
    $stmt->bindParam(7, $team); 

$stmt->execute(array($gamerid,$name,$age,$location,$email,$co‌​nsole,$team); 
+2

Синтаксис 'insert' не является синтаксисом' update'. 'mysql_ *' также не будет смешиваться с 'pdo', вы должны использовать' pdo' и параметризовать запрос. См. Https://dev.mysql.com/doc/refman/5.7/en/update.html для синтаксиса обновлений. Кроме того, переменные в одинарных кавычках не являются переменными. Поэтому есть много проблем, которые вам нужно будет решить. – chris85

+0

поэтому SET gamerid = "$ gamerid", name = "$ name", ect .. Моя способность pdo практически не существует –

+0

Ваш ' mysql_ * 'похоже, не так далеко, так что может также исправить корабль, прежде чем он опустится. http://php.net/manual/en/pdo.prepared-statements.php Используйте '?' для всех значений, затем передайте значения с помощью функции привязки или в execute как массив. например '$ sth-> execute (array ($ gamerid, $ name, $ age, $ location, $ email, $ console, $ team))' и подготовить как '$ pdo-> prepare ('UPDATE bfl SET gamerid =? , name =?, age = ?, location = ?, email = ?, console =? WHERE team =? ') ' – chris85

ответ

1
  1. Этот синтаксис MySQL синтаксис insert, а не обновлять.
  2. Использовать PDO не mysql_*.
  3. Используйте параметризованные запросы, а не конкатенированные.
  4. Заполнители не цитируются.
  5. Привяжите или закрепите в выполнении, не делайте того и другого.
  6. Не помещайте круглые скобки вокруг всего внутреннего запроса.

Соединенных вы получите:

$stmt = $dbh->prepare('UPDATE bfl 
         SET gamerid=?, 
         name=?, 
         age=?, 
         location?, 
         email=?, 
         console=? 
         WHERE team=?'); 
$stmt->execute(array($gamerid,$name,$age,$location,$email,$co‌​nsole, $team)); 

Также смотрите на использование отчетов об ошибках, http://php.net/manual/en/pdo.error-handling.php, это поможет вам в будущем.

+0

ahh, поэтому, если бы я связал каждый, мне просто нужно было бы выполнить(); –

+0

Это правильно. Ваш подход был двойным. – chris85

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