Я пытаюсь вставить данные в базу данных, которая у меня есть на моем сервере.
Для подключения к моей базе данных у меня есть следующий код:
<?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% правильный, поскольку я тестировал его в другом месте.
Может кто-нибудь мне помочь?
вы открываете два подключения к базе данных. измените свой код на
$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
затем привяжите значения с вашими переменными, он будет работать