0

次のコードを変更しました。

mysql_connect('localhost','username','password');
mysql_select_db('pl') or die( "Unable to select database"); 

PDO('mysql:host=localhost;dbname=pl;charset=UTF-8', 'username', 'password');

それは正しいですか、これを変数に渡す必要がありますか (PDO チュートリアルでは、変数 db に渡されます。その目的は何ですか? http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers )

4

2 に答える 2

6

以下からコードを変更します。

PDO('mysql:host=localhost;dbname=pl;charset=UTF-8', 'username', 'password');

に:

$Connection = new PDO('mysql:host=localhost;dbname=pl;charset=UTF-8', 'username', 'password');

基本的なクエリ構造は$Connection変数を中心に展開します。例:

$Query = $Connection->query("LIST TABLES");
$Results = $Query->fetchAll();

これは次のようなものです:

$Query = mysql_query("LIST TABLES");
$Results = mysql_fetch_array($Query);

次のマニュアルをお読みください。

接続を構築する (mysql_connect/mysql_select_db など)

PDO クエリ (mysql_query() と同様);

準備されたステートメント

準備済みステートメントの実行

PDO FetchAll (mysql_fetch_array と同様)

PDO マニュアル全体

于 2012-12-23T16:15:18.700 に答える
1

何か問題が発生した場合に例外をキャッチできるため、これは優れています(したがって、私は言われました)

try {
    $conn = new PDO('mysql:host=localhost;dbname=mydb', 'root', 'test', array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}

明らかに、mydb、ルート、およびテストを変更する必要があります。

さて、残っているのは、$connクエリを実行するたびに呼び出すことだけです。

例外のキャッチor die(mysql_error());は、SQL 接続の一部に少し似ていることを覚えておいてください。ただし、これはある意味でそれを行います。エラーが発生してもファイルの場所全体が表示されないため、セキュリティ上の脅威になる可能性があります.

さらに、これらのチュートリアルを見て、さらに学習することをお勧めします。

  1. PHP データベースへのアクセス: 正しく行っていますか?
  2. MySQL 開発者向け PDO チュートリアル
于 2012-12-23T16:15:58.477 に答える