首页 文章

需要深入了解mysqli“bind_result()”

提问于
浏览
2

在研究php.net后我仍然感到困惑 .

From php.net: mysqli_stmt :: bind_result - mysqli_stmt_bind_result - 将变量绑定到结果存储的预准备语句,并将结果集中的列绑定到变量 .

My uncertainty: "binds columns" - 什么专栏? PHP是否将变量(var1,var2等)放入列中 . 列是否引用数据库中的列?与此同时,我将研究与myqli bind_result()相关的列 .

From php.net: 当调用mysqli_stmt_fetch()来获取数据时,MySQL客户端/服务器协议将绑定列的数据放入指定的变量var1,....

My uncertainty: "data into the specified variables var1" - 什么数据?这是用户提供的数据吗?这个数据是bind_result($ x)生成并返回的(神奇地?)

我也尝试通过一个具有类似问题的成员的Stackoverflow帖子来理解这个函数 - (使用bind_result推入数组)问Jun 17 at 20:36 jskidd3 - 尽管他的代码示例与我的相似,他的问题不像我在这里的问题那么基本 .

我知道甚至在表面上有什么问题 . 那么,这个功能的目的是什么?另外,理论上你能说明在绑定结果之后准备语句会是什么样子吗?如果可能的话,你可以从PHP.net网站清除我留下的歧义吗?您可以使用我从http://www.mustbebuilt.co.uk/2011/11/17/mysqli-cheatsheet/获得的以下示例 .

在我下面的例子中,我不明白$ filmName被传递给bind_result($ filmName)的值是什么,我不明白通过echo输出会得到什么结果?

我真的很感谢你的帮助,并帮助我理解这个功能正在发生什么 . 谢谢!!

Querying scenarios - One row from user input using prepare:

$stmt = $mysqli->prepare("SELECT filmID, filmName FROM movies WHERE filmID = ?");$stmt->bind_param('i', $_GET['filmID']);
$stmt->execute(); 

//what value is being passed - and where is $filmName(and it's value) coming from?
$stmt->bind_result($filmName); 
$stmt->fetch();
$stmt->close();

//resulting value or output displayed? 
echo $filmName;

1 回答

  • -1

    “绑定列”

    是指查询结果的列 .

    “数据到指定的变量var1”

    执行提取时(如 $stmt->fetch() ),绑定变量将根据绑定分配值 . 您不需要每次都显式分配值 .

    为了您的查询

    $stmt = $mysqli->prepare("SELECT filmID, filmName FROM movies WHERE filmID = ?");
    

    这些列按顺序 filmIDfilmName .

    当您调用 bind_result 时,它会将第一个变量绑定到结果中的第一列 . 在这种情况下,

    $stmt->bind_result($filmName);
    

    实际上最终将变量 $fileName 绑定到 filmID 字段 .

    如果你想要正确绑定filmName,你可以重新编写查询,使filmName成为第一个:

    $stmt = $mysqli->prepare("SELECT filmName, filmID FROM movies WHERE filmID = ?");
    

    或者你可以绑定filmID变量:

    $stmt->bind_result($filmID, $filmName);
    

相关问题