Php 准备及;结合
所以,当谈到PHP和SQL时,我是一个相对(完全)的新手(可怕的词)。我担心我已经跌入了一个深渊。我正试着让我的头脑了解绑定/准备好的语句 这是我的密码:Php 准备及;结合,php,mysql,mysqli,Php,Mysql,Mysqli,所以,当谈到PHP和SQL时,我是一个相对(完全)的新手(可怕的词)。我担心我已经跌入了一个深渊。我正试着让我的头脑了解绑定/准备好的语句 这是我的密码: require('connect.inc.php') if (isset($_GET['first_name']) && !empty($_GET['first_name'])) { $first_name = trim($_GET['first_name']); $query = "SELECT first
require('connect.inc.php')
if (isset($_GET['first_name']) && !empty($_GET['first_name'])) {
$first_name = trim($_GET['first_name']);
$query = "SELECT first_name, second_name FROM join_names WHERE first_name=?";
$stmt = mysqli_stmt_init($db);
if($query_prepared = mysqli_stmt_prepare($stmt, $query)){
mysqli_stmt_bind_param($stmt, 's', $first_name);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $fn, $sn);
mysqli_stmt_fetch($stmt);
echo $fn.' '.$sn;
}
}
现在代码工作了。它显示在$\u GET中输入的值的第一个名称和第二个名称。我不知道怎么做或为什么,但我想我已经缩小了范围
我理解这一点的主要问题始于mysqli_stmt_init。这是怎么一回事?参数如何绑定到它而不需要变量来固定它?这里的说明:从mysqli_stmt_init中的$stmt开始,然后准备它,然后将参数绑定到它,然后执行它。所有这些变化是如何持续的
第二个问题是,stmt\U准备做什么?我知道它准备了陈述(理论上我知道,但实际上我不知道这意味着什么)
在这两个方面,我已经看过了定义和手册,但绝对没有什么是点击。对我来说,PHP.net是一堆乱七八糟的行话,到目前为止,我还没有足够的知识去理解
我很抱歉,这里的每个人都很清楚这一点,但对我来说,这并没有达到目的。无论如何,感谢您提供的任何帮助:)我将尝试一次回答一个问题: 我理解这一点的主要问题始于mysqli_stmt_init。这是什么 参考人: mysqli_stmt_init-初始化语句并为其返回一个对象 与mysqli_stmt_prepare一起使用 基本上,这只是一个起点。在我看来,OOP方法更容易理解。试试看 下一个问题: 参数如何绑定到它而不需要变量来固定它 在准备语句时,将解析查询字符串(带有用于实际值的占位符),并查找和标识占位符。 这些信息存储在一个对象中,该对象等待您的正确值来执行查询。同时,该对象与数据库对话并准备查询执行计划 现在你已经准备好了一份声明。此时准备好的声明基本上如下所示:
- 查询执行计划李>
- 等待值实际执行查询的占位符列表
是起点mysqli\u stmt\u init
将在数据库引擎中创建一个执行计划,并标识您请求的参数占位符mysqli\u stmt\u prepare(stmt,query)
为第一个可用占位符分配一个值mysqli\u stmt\u bind\u参数(stmt,value\u type,value)
将使用从绑定参数接收的值,使数据库执行上面决定的查询计划mysqli\u stmt\u execute(stmt)