PDO не работает при попытке выполнить команду INSERT - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь вставить SQL-запрос, но он не работает - я не получил ошибок, $pdo->errorInfo(); только возвращает Array, а в mysql ничего не видно!Я на 100% уверен, что $ text, $ file и $ title установлены (я проверял это с помощью echo). В любом другом php-файле это соединение pdo работает с include, но не в dev.php *.1006 * что мне делать ???

datenbank.php

<?php
$pdo = new PDO('mysql:host=localhost;dbname=db', 'user', 'password');
?>

dev.php

include("datenbank.php");
// Prepare an insert statement
$post = $pdo->prepare("INSERT INTO news (text, date, file, title) VALUES ($text, NOW(), $file, $title)");
$post->execute(); 
$help = $pdo->errorInfo();

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Вы не используете маркеры параметров в своем prepare состоянии PDO.Когда вы готовите запрос с использованием расширения PDO, вам нужно поместить маркеры в оператор запроса и указать значение этих маркеров в функции execute, как ассоциативный массив.

Вы можете использовать маркеры, такие как :marker или знаки вопроса ?, и ваш запрос будет выглядеть так:

include("datenbank.php");
// Prepare an insert statement with marks params
$post = $pdo->prepare(INSERT INTO news (text, date, file, title) VALUES (:text, NOW(), :file, :title));
//execute statements with the marks values in prapare function params
$post->execute(array(':text' => $text, ':file' => $file, ':title' => $title)); 

Редактировать: PD: Это предотвращает SQL-инъекцию .......

0 голосов
/ 08 октября 2018

для строкового значения вам нужна кавычка

$post = $pdo->prepare("INSERT INTO news (text, date, file, title) 
   VALUES ('$text', NOW(),'$file', '$title')");

в любом случае вы не должны использовать php var в sql, вы рискуете для sqlinjection .. вместо этого используйте подготовленные операторы и обязательный параметр

$stmt = $conn->prepare("INSERT INTO news (text, date, file, title) 
         VALUES (:text, NOW(), :file, :title)");
$stmt->bindParam(':text', $text);
$stmt->bindParam(':file', $file);
$stmt->bindParam(':title', $title);

 $stmt->execute();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...