Как я могу убедиться, что мой запрос вставляет новую строку?

Вот мой запрос:

$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.

Другие вопросы по тегам