在MYSQL存储查询中使用PHP变量

时间:2012-04-24 17:10:39

标签: php mysql variables storage

我在发布之前进行了搜索,但没有找到我的问题的答案。

我在数据库中有一个表,用于存储查询(例如存储在数据库中的php变量):

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

我假设当我从数据库中提取该特定查询时,PHP会识别该变量并替换它,但它将其视为常规文本。

有没有办法让PHP用现有的实际变量替换$ _ _?我想也许是eval()函数??

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

假设您从数据库中提取查询:

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

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

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

我不确定这是否有效,但这是我首先尝试的......

答案 2 :(得分:0)

sprint似乎运作良好。而不是将它们存储为$ variable,我可以使用%s等。