2

これを投稿する前に検索しましたが、私の質問に対する答えが見つかりませんでした。

次のようなクエリを格納するデータベースにテーブルがあります(データベースにphp変数が格納されています):

select * from accounts where type = 'client'
select * from accounts where user_id = $userid
select * from accounts where name = '$name'

データベースからその特定のクエリを取得すると、PHP は変数を認識して置換すると想定しましたが、通常のテキストとして扱います。

PHP で $ _ _ を実際に存在する変数に置き換える方法はありますか? おそらく eval() 関数だと思いますか??

4

3 に答える 3

1

あなたが試すかもしれないのは、それを準備済みステートメントとして使用することです。代わりに、データベースに格納されたクエリが次のようになったとします。

select * from accounts where type = 'client'
select * from accounts where user_id = ?
select * from accounts where name = ?

そして、次のような PDO 準備済みステートメントを使用します。

$pdo = new PDO($dsn, $user, $pass);
$statement = $pdo->prepare($secondOfTheAboveQueries);
$statement->execute(array($userId));
$account = $statement->fetch();

user_id = :useridさまざまな変数を使用して一度にいくつかのステートメントを処理する必要がある場合は、疑問符の代わりに名前付き変数を使用して準備済みクエリを使用することもできます。

同様に機能するストアド プロシージャを検討することもできます。両方の説明はここにあります:

http://php.net/manual/en/pdo.prepared-statements.php

于 2012-04-24T18:23:05.240 に答える
0

スプリントはうまくいくようです。$variable として保存する代わりに、%s などを使用できます。

于 2012-07-04T02:54:14.697 に答える
0

データベースからクエリをプルすると仮定します。

$string = ''; // Assign the real userID

while ($fetch = mysql_fetch_array($query)) {

    $newQuery = str_replace('$userid', $string, $fetch['your_row_name']); 
} 

これでうまくいくかどうかはわかりませんが、これが最初に試すことです...

于 2012-04-24T18:07:12.693 に答える