我的意思是,我目前准备的声明是这样开始的:
$stmt = $bd->prepare("SELECT Beer_Name FROM Beer WHERE Gluten = ?");
但是可以像这样(下面)这样做吗?因为我尝试了几种方法,但没有一种方法成功。
$stmt = $bd->prepare("'.$sql.'");
我问,因为我正在尝试创建一个函数,因为我正在编写一个使用大量查询的网站。
<?php
include('connection.php');
global $sql;
global $ready;
$sql = 'SELECT Beer_Name FROM Beer WHERE Gluten = ?';
$ready = "Yes";
function bindingHelper($ready, $sql) {
$stmt = $bd->prepare($sql);
$stmt->bind_param("s", $ready);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($beer_name);
$stmt->fetch();
echo($beer_name);
}
bindingHelper($ready, $sql);
?>
答案 0 :(得分:2)
我实际上并没有注意到,是的,我有一个公平的想法。我们都会犯错。我移动了include(&#39; connection.php&#39;);在功能内部,现在它完美地工作。请添加此作为答案,我接受。 - user3822332
根据OP的要求。
这里有一个可变范围问题。
因此,您的变量无法从函数中访问。
检查链接引用时出错:
答案 1 :(得分:1)
PHP字符串101:
你有这个:
$sql = "SELECT 'foo'";
$stmt = $bd->prepare("'.$sql.'");
您将把这个文字查询发送到数据库:
'.SELECT 'foo'.'
^^------------^^- quotes and . from the prepare() call
^^^^^^^^^^^^--- contents of $sql
由于数据库绝对 NO 了解如何创建此字符串,因此需要使用面值:
'.SELECT 'foo'.'
^^^^^^^^^^--- string literal
^^^--- unknown keyword
^^^--- string literal
这些都不是有效的sql,因此整个&#34;查询&#34;无效。