2016-07-04 2 views
0

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

$db->query("INSERT INTO mytable(col1, col2) VALUES('val1', 'val2')"); 

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


Примечание: Я не использую execute() в этом случае.

+0

, с которым вы используете API MySQL для связи? –

+0

@ Fred-ii- PDO ..! –

+1

http://stackoverflow.com/questions/1661863/pdo-mysql-how-to-know-if-insert-was-successful и http://stackoverflow.com/questions/13833499/syntax-for-if-else -statement-if-insert-was-success-in-a-pdo-подготовленные-statemen –

ответ

1

Взятые непосредственно из w3schools.com/php/php_mysql_insert ...

$sql = "INSERT INTO MyGuests (firstname, lastname, email) 
VALUES ('John', 'Doe', '[email protected]')"; 

if ($conn->query($sql) === TRUE) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

Вы ищете это: если ($ conn-> запрос ($ SQL) === ИСТИНА)

Редактировать : Извините, ошибся пример: @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', '[email protected]')"; 
    // 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); 
} 
?> 

Надеюсь, это поможет!

+2

Вы имеете в виду взятый из несвязанной ссылки dblibrary? – Drew

+0

Хуан, внизу есть PDO. И все же, он вернул бы «PDOStatement», нет? Возможно, я ошибаюсь. Пожалуйста, подстройте свой ответ, чтобы я мог превратить свой DV в upvote мой друг. – Drew

0

PDO query функция вернет PDOStatement

Вы можете проверить на error code в PDOStatement. Это должно быть 0, если все было выполнено успешно. Другого варианта, это проверка на rowCount результат функции - если новая строка была вставлена, она должна быть 1.

+0

Я вижу. спасибо .. upvote –

0

Вы обычно выполняете execute() вызов на PDOStatement объекта, возвращается через prepare() вызова.

Здесь возвращаемое значение вашего звонка query() также будет PDOStatement, на котором вы можете применить свой rowCount().

PDO::query() возвращает объект PDOStatement или FALSE в случае неудачи.

+0

спасибо .. upvote. Можете ли вы рассказать мне, что такое «PDOStatement»? –

+0

Похоже на что-то готовое выполнить или привязать параметры к (да). – Drew

+0

@Drew Это похоже на запрос? Как 'INSERT INTO ...'? –

Смежные вопросы