1

こんにちは皆さん、私は mysql_* を使用して構築されたプログラムを持っており、セキュリティと減価償却の理由から PDO に変換しようとしています。

だから私は mysql_* 関数のセットアップの負荷を持っています

return select_from_where('users', '*', "username = '$username' AND password = '$pass'", "LIMIT 1");

私がPDOに変換したもの

return $conn -> query("SELECT * FROM users WHERE username = '$username' AND password = '$pass' LIMIT 1");

ただし、プログラムは正しい結果を提供しません。データが返されているかどうかはわかりません

私の質問は、PDO 応答を使用できる変数に設定する必要がありますか、または上記と同様の方法を使用してプログラムで使用できる値を返すようにすることは可能ですか?

各関数クエリにグローバル $conn を含めたので、意図したとおりに接続されていると確信しています..

私のプログラムはほぼ完成し、リリースが保留されているため、この問題を簡単に修正できる人はいますか :D

前もって感謝します

ルーク

**編集行*

$sql = ("SELECT * FROM users WHERE username = '$username' AND password = '$pass' LIMIT   1");
$stm = $conn->prepare($sql);
$stm->execute(array($username,$pass)); $user = $stm->fetch(); echo $user['username'];
4

2 に答える 2

5

まず、個人的には、次のような機能を持つ意味がないと思いますselect_from_where

実際には何も節約できません.「SELECT、FROM、およびWHERE」という単語をクエリから関数名に移動しただけで、この関数を非常に制限しました-たとえば、結合などはありません.

第二に、PDO::query()とにかく関数を使用すべきではありません -準備されたステートメントをサポートしていません。

したがって、コードは

global $conn;
$sql = "SELECT * FROM users WHERE username = ? AND password = ? LIMIT 1";
$stm = $conn->prepare($sql);
$stm->execute(array($username,$pass));
return $stm->fetch();

発生したすべてのエラーを確認できるようにするには、PHP と PDOも構成する必要があります。

于 2013-05-14T13:59:36.750 に答える
0

これを変える

return $conn -> query("SELECT * FROM users WHERE username = '$username' AND password = '$pass' LIMIT 1");

に:

$username = 'user';
$password ='password';
$stmt =$conn->prepare("SELECT * FROM users WHERE username = ? AND password = ? LIMIT 1");
$stmt->execute(array($username, $password));
echo $stmt->rowCount();
于 2013-05-14T13:57:28.460 に答える