Вставка в базу данных с использованием PDO

Я пытаюсь вставить данные в базу данных, которая у меня есть на моем сервере.

Для подключения к моей базе данных у меня есть следующий код:

<?php $host = "/homes/49/jc192699/public_html/dbase/"; $database = "EduPro.db"; $dbhandle = new PDO("sqlite:".$host.$database); try { $dbhandle = new PDO("sqlite:".$host.$database); } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); } ?> 

и все это прекрасно работает! Я включил это в свой код, так что это не проблема.

Вот мой код для вставки данных в базу данных:

 <?php $sql = "INSERT INTO USERS (`userName`, `password`) VALUES (`test, `testy`)"; if ( $fetched = $dbhandle->query($sql)){ $fetched->execute(PDO::FETCH_BOTH); echo "Success!"; } else { echo "Fail."; } ?> 

По какой-то причине он не вставляет данные в базу данных. Я знаю, что оператор SQL на 100% правильный, поскольку я тестировал его в другом месте.

Может кто-нибудь мне помочь?

Solutions Collecting From Web of "Вставка в базу данных с использованием PDO"

вы открываете два подключения к базе данных. измените свой код на

 $host = "/homes/49/jc192699/public_html/dbase/"; $database = "EduPro.db"; try { $conn = new PDO("sqlite:".$host.$database); } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); } 

вы не должны использовать backquote вместо использования одной кавычки в своем запросе. а также столбцы не должны иметь никаких кавычек.

 try { $sql = "INSERT INTO USERS (userName, password) VALUES ('test', 'testy')"; $sth = $conn->query($sql); } catch(PDOException $e) { echo $e->getMessage(); } 

для извлечения записей, которые вам нужны для использования

 try { $sth = $conn->query('SELECT * FROM USERS'); $rows = $sth->fetchAll(PDO::FETCH_ASSOC); //$rows contains the fetched records in an associative array var_dump($rows); } catch(PDOException $e) { echo $e->getMessage(); } 

Узнайте больше о PDO здесь http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

Почему вы возвращаете значения? Попробуйте просто одинарные кавычки:

 $sql = "INSERT INTO USERS (userName, password) VALUES ('test', 'testy')"; 

Кроме того, проверьте свой журнал ошибок PHP, он может дать вам некоторое представление.

И, согласно документам , я считаю, что вам нужно использовать exec() vs query() для выполнения не-select запросов, таких как вставка, обновление и удаление. Если вы планируете передавать переменные переменной $sql , вы должны также прочитать о подготовке .

Ниже приведены некоторые правила синтаксиса:

SQL-запрос должен быть указан в значениях PHP. Строковые значения внутри SQL-запроса должны быть указаны. Числовые значения не должны указываться. Слово NULL не должно указываться

  If(isset($_POST['submit'])) { $stmt = $db->prepare("INSERT INTO usersdata (Firstname, Lastname, Email,Passward) VALUES (:name, :lstname, :email,:pass)"); // inserting a record -  If(isset($_POST['submit'])) { $stmt = $db->prepare("INSERT INTO usersdata (Firstname, Lastname, Email,Passward) VALUES (:name, :lstname, :email,:pass)"); // inserting a record 

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