1

すべてのコードを古いmysqlドライバーからPDOに変更しました。

これまでのところ、多くの基本的な機能が存在しないことがわかりました!元。..などと同等ではmysql_num_rowありません(ただし、この投稿のポイントではありません:/)

通常、mysqlドライバーを使用すると、次のようになります。

$result = mysql_query($query);

if(!$result){
    displayError(mysql_error());
}

PDOを使用して同様のことをどのように行いますか?

4

2 に答える 2

3

こちらのドキュメントをご覧ください。3 つのモードがあります。

  • PDO::ERRMODE_SILENT(デフォルト)
  • PDO::ERRMODE_WARNING
  • PDO::ERRMODE_EXCEPTION

最後を有効にすることをお勧めします。これにより、エラー時に例外がスローされます。

$pdo = new PDO($dsn,$user,$pass,$options);  // Example connection
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

次に、ステートメントをtry/catchブロックで囲みます

try {
    // your query here
} catch (PDOException $e) {
    echo 'Query failed: ' . $e->getMessage();
}

別のメモ - mysql_num_rowPDO で:

$sql = "SELECT count(*) FROM `table` WHERE x = y"; 
$result = $con->prepare($sql); 
$result->execute(); 
$number_of_rows = $result->fetchColumn()  
于 2012-06-11T12:47:50.780 に答える
1

使用するtry { } catch {}

<?php
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

try {
    $dbh = new PDO($dsn, $user, $password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

?>

参照

于 2012-06-11T12:47:00.233 に答える