0

MySQLのプリペアドステートメントを初めて使用しようとしていますが、データが返されません。

$pdo = new PDO('mysql:dbname=[DBASE];host=localhost', '[USER]', '[PWORD]',
                array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));

$sth = $pdo->prepare('SELECT id FROM users WHERE username = "' . mysql_real_escape_string($_SESSION['myusername']) . '"');
$sth->execute();
$result = $sth->fetch(PDO::FETCH_OBJ);
$user_id = $result->id;

おそらく明らかなように、私は特定のユーザー名のuser_idを返そうとしています。誰かが私が間違っていることを教えてもらえますか?ありがとう。

4

1 に答える 1

1

あなたがやろうとしていることのために:

$pdo = new PDO('mysql:dbname=[DBASE];host=localhost', '[USER]', '[PWORD]',
                array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));

$sth = $pdo->prepare('SELECT id FROM users WHERE username = ?');

$success = $sth->execute(array($_SESSION['username']));

if ($success) {
    $result = $sth->fetch(PDO::FETCH_OBJ);
    $user_id = $result->id;
} else {
    echo "Query failed.";
    var_dump($sth->errorInfo());
}

名前付きパラメーターまたは位置パラメーターのいずれかを使用してステートメントを準備する必要があります。準備が成功した場合は、そのステートメントに対してクエリを実行できます。パラメータのバインド方法に応じて、executeはさまざまなタイプの引数を受け入れます。

ステートメントの実行が成功した場合は、ステートメントから結果を読み取ることができます。

マニュアルのその他の例:

于 2012-08-14T19:32:37.363 に答える