-1

私の場合、私はWebサイトを構築していて、mysqlから始めました。mysqlAPIの代わりにPDOAPIを使用してWebサイトをコーディングするにはどうすればよいですか?PDOのmysqlコマンドに相当するものは何ですか?

次のようなインスタンスの場合:

$query = mysql_query(INSERT INTO users Values ('','$un','$fn','$ln','$em','$pswd','d','0')");

''とを持っている場合、正しいPDO構文は何でしょう'0'か?

4

3 に答える 3

1

mysql_connect.inc.php

$db = new PDO('mysql:host=localhost;dbname=socialnetwork', 'root', 'abc123');

次に、mysql_query がある場所では、 PDO Query Methodsを使用する必要があります。例を示します。

index.php

// instead of:
$u_check = mysql_query("SELECT username FROM users WHERE username='$un'");

// use:
$statement = $db->prepare('SELECT username FROM users WHERE username = :username');
if ($statement->execute(array(':username' => $un))) {
  // query succeeded
  if ($statement->rowCount() > 0){
    // user exists
  }
}

mysql_*を PDO ステートメントに置き換えて、代わりにその API を使用するだけです。

基本的なあらすじ:

  • $dbデータベースへの接続です。
  • $db->prepare()新しいPDOstatementを生成すると、次のことができます。
    • クエリ パラメータの設定に使用$statement->bindParam()します( に直接送信することもできますexecute()
    • $statement->execute()データベースを呼び出すために使用し、
    • $statement->fetch()// fetchAll()other ()を使用して、そのクエリから情報を取得します。
于 2013-02-26T13:50:31.207 に答える
0

mysql [ext] には重大なセキュリティ エクスプロイトがあります

いいえ、そうではありません。
Mysql ext は、それを使用する開発者と同じくらい良くも悪くもなります。
しかし、「重大なセキュリティ エクスプロイト」のようなものはありません。

したがって、簡単な修正があります。クエリに引用符で囲まれた文字列のみを追加し、常に適切にフォーマットする限り (mysql_real_escape_string を使用)、かなり安全です。

于 2013-02-26T13:56:11.407 に答える
0

投稿したコードのほとんどは、次を除いて変更する必要はありません。

mysql_connect.inc.php (新しい接続文字列) および「mysql_query」を呼び出す場所

ストレートSQLを準備済みステートメントに変換するには、ラッパークラス(これを試してください - PDO wrapper )が必要です

于 2013-02-26T13:59:38.077 に答える