-1

insertステートメントが実行されているかどうかを確認する方法を教えてください。

それをチェックする私の現在のコードはこれです:

$query = $conn->prepare("INSERT INTO editlog VALUES('',:whoadd,:doing,NOW())");
$query-> execute(array(':whoadd'   => $whoadd,':doing'   => $doing));
if ($query->rowCount() > 0) {
// insert statement have been executed 
}
else 
{
// something went wrong
}

使用するよりも良い方法はあり$query->rowCount() > 0ますか?rowCount()それ自体がmysqldatabase..soへのクエリを実行すると聞きましたが、良い代替手段は何ですか?

4

3 に答える 3

3

Mark Parnellが示唆したように、execute呼び出しをifステートメントでラップすることでうまくいきます。後でデータベースオブジェクトのいくつかの属性を設定することも役立つかもしれません。

 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

PDOExceptionクエリが失敗した場合にPDOに例外()をスローさせる。これらの属性を設定するには、配列を4番目のパラメーターとしてコンストラクターに渡します。

$pdo = new PDO('mysql:dbname=foobar;host=127.0.0.1','your','pass',
                      array(PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ'));

たとえば、指定できるすべての属性の完全なリストは次のとおりです

于 2013-03-12T23:56:38.740 に答える
1

execute呼び出しの戻り値を確認します。

if ($query->execute(array(':whoadd' => $whoadd,':doing' => $doing))) {
    // insert statment have been excuted 
}
else 
{
    // something went wrong
}
于 2013-03-12T23:10:05.903 に答える
0

PDOStatement :: execute()自体は、成功した場合はtrueを返し、失敗した場合はfalseを返します。

于 2013-03-12T23:11:38.373 に答える