У меня возникли проблемы с вложением в базу данных sqlite3 с pdo. Вы должны извинить мое незнание с PDO, он кажется таким иностранным, исходящим из интерфейса базы данных Python.
Итак, вот моя проблема. У меня простая вставка:
$dbh = new PDO('sqlite:vets.db'); $count = $dbh->exec("INSERT INTO vets(name,email,clinic,streetname,citystatezip,link,phone,fax,animal,region,visible) VALUES ($name,$email,$clinic,$streetname,$citystatezip,$link,$phone,$fax,$animal,$region,$visible)"); $dbh = null;
Я просто хочу выполнить эту команду SQL в моей базе данных и сделать с ней. Хотя выполнение этого сценария не вызывает ошибок, он никогда не обновляет базу данных. Я пробовал всевозможные разрешения для самой базы данных, даже сделал это 777, но это не имеет никакого значения.
Может кто-нибудь мне помочь?
Одним из преимуществ PDO является то, что вы можете создавать подготовленные операторы. Вот код из моего проекта PHP:
$qry = $db->prepare( 'INSERT INTO twocents (path, name, message) VALUES (?, ?, ?)'); $qry->execute(array($path, $name, $message));
Как вы можете видеть, я использую ?
где я хочу вставить значение, тогда я выполняю запрос с массивом значений, который следует помещать вместо вопросительных знаков.
Если вы сделаете это, ваш запрос будет намного безопаснее и с большей вероятностью работать (поскольку отсутствующее значение остановит ваш запрос от работы, если вы вставляете переменные непосредственно в запрос, как и вы.)
У вас может быть ошибка в вашем SQL-запросе. Вы можете распечатать его, а затем попытаться выполнить его в каком-нибудь интерфейсе графического интерфейса SQLite, таком как SQLite Database Browser .
// you can skip PDO part for now, because we know it doesn't work // $dbh = new PDO('sqlite:vets.db'); $query = "INSERT INTO vets(name,email,clinic,streetname,citystatezip,link,phone,fax,animal,region,visible) VALUES ($name,$email,$clinic,$streetname,$citystatezip,$link,$phone,$fax,$animal,$region,$visible)"; echo $query; // $count = $dbh->exec($query); // $dbh = null;
Я вижу, что вы не заворачиваете свои значения в кавычки, возможно, это источник проблемы. Возможно, некоторые опечатки в именах полей таблицы также. Все выйдет, как только вы действительно увидите запрос.