是否可以在准备好的语句中使用变量而不是文字?如果是这样,如何?
Is it possible to use variables instead of a literal in prepared statements? If so, how?
我的意思是,我当前准备好的语句是这样开始的:
$stmt = $bd->prepare("SELECT Beer_Name FROM Beer WHERE Gluten = ?");
但是有没有可能这样做(如下)?因为我试了好几种方法,none都成功了。
$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);
?>
PHP 字符串 101:
你有这个:
$sql = "SELECT 'foo'";
$stmt = $bd->prepare("'.$sql.'");
您将向数据库发送此文字查询:
'.SELECT 'foo'.'
^^------------^^- quotes and . from the prepare() call
^^^^^^^^^^^^--- contents of $sql
由于数据库完全没有知道这个字符串是如何创建的,所以它从表面上看:
'.SELECT 'foo'.'
^^^^^^^^^^--- string literal
^^^--- unknown keyword
^^^--- string literal
其中 None 有效 sql,因此整个 "query" 无效。
I didn't notice that actually, and yes I have a fair idea. We all make mistakes. I moved include('connection.php'); inside the function and now it works perfectly. Please add this as an answer and I'll accept. – user3822332
根据 OP 的要求。
这里是变量范围问题。
因此,您的变量未从函数中访问。
- 在他们的问题下的评论中建立解决方案。
检查链接引用时出错:
我的意思是,我当前准备好的语句是这样开始的:
$stmt = $bd->prepare("SELECT Beer_Name FROM Beer WHERE Gluten = ?");
但是有没有可能这样做(如下)?因为我试了好几种方法,none都成功了。
$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);
?>
PHP 字符串 101:
你有这个:
$sql = "SELECT 'foo'";
$stmt = $bd->prepare("'.$sql.'");
您将向数据库发送此文字查询:
'.SELECT 'foo'.'
^^------------^^- quotes and . from the prepare() call
^^^^^^^^^^^^--- contents of $sql
由于数据库完全没有知道这个字符串是如何创建的,所以它从表面上看:
'.SELECT 'foo'.'
^^^^^^^^^^--- string literal
^^^--- unknown keyword
^^^--- string literal
其中 None 有效 sql,因此整个 "query" 无效。
I didn't notice that actually, and yes I have a fair idea. We all make mistakes. I moved include('connection.php'); inside the function and now it works perfectly. Please add this as an answer and I'll accept. – user3822332
根据 OP 的要求。
这里是变量范围问题。
因此,您的变量未从函数中访问。
- 在他们的问题下的评论中建立解决方案。
检查链接引用时出错: