我在发布之前进行了搜索,但没有找到我的问题的答案。
我在数据库中有一个表,用于存储查询(例如存储在数据库中的php变量):
select * from accounts where type = 'client'
select * from accounts where user_id = $userid
select * from accounts where name = '$name'
我假设当我从数据库中提取该特定查询时,PHP会识别该变量并替换它,但它将其视为常规文本。
有没有办法让PHP用现有的实际变量替换$ _ _?我想也许是eval()函数??
答案 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
等命名变量的预备查询而不是问号。
您可能还需要考虑类似工作的存储过程。两者的解释可以在这里找到:
答案 1 :(得分:0)
假设您从数据库中提取查询:
$string = ''; // Assign the real userID
while ($fetch = mysql_fetch_array($query)) {
$newQuery = str_replace('$userid', $string, $fetch['your_row_name']);
}
我不确定这是否有效,但这是我首先尝试的......
答案 2 :(得分:0)