Как я могу убедиться, что мой запрос вставляет новую строку?
Вот мой запрос:
$db->query("INSERT INTO mytable(col1, col2) VALUES('val1', 'val2')");
Я пытаюсь понять, что запрос вставляет новую строку или нет? Как я могу это определить?
Примечание: я не использую execute()
в этом случае.
3 ответа
Взято прямо с http://www.w3schools.com/php/php_mysql_insert.asp...
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
Вы ищете это: if ($ conn-> query ($ sql) === TRUE)
Изменить: Извините, взял неправильный пример, как Drew указал!
Ниже приведен правильный фрагмент, он использует выполнение, как я думаю, и должно (исправьте меня, если я ошибаюсь!)
Эта ссылка может быть более полезной: pdostatement.execute
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
// use exec() because no results are returned
$conn->exec($sql);
echo "New record created successfully";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
а также
<?php
function customExecute(PDOStatement &$sth, array $params = array()) {
if (empty($params))
return $sth->execute();
return $sth->execute($params);
}
?>
Надеюсь это поможет!
Вы обычно выполняете execute()
позвонить на PDOStatement
объект, возвращенный через prepare()
вызов.
Здесь возвращаемое значение вашего query()
вызов также будет PDOStatement
объект, к которому можно применить rowCount()
,
PDO::query()
возвращаетPDOStatement
объект илиFALSE
на провал.
Функция запроса PDO вернет PDOStatement
Вы можете проверить код ошибки в PDOStatement. Должно быть 0, если все было выполнено успешно. Другой вариант - проверка на результат функции rowCount - если новая строка была вставлена, она должна быть 1.