Kru*_*hah 1 php mysql mysqli prepared-statement bindparam
我正在使用PHP和mysqli理解预处理语句.我试着阅读一些教程,手册和这个:PHP中的Bind_Param,但是.但没有找到任何令人满意的anser.
有人在回答中写道:
__CODE__.
我在教程中找到了一些像这样的代码:
$stmt = $con->prepare("INSERT INTO user_accounts VALUES (?,?,?,?)");
$stmt->bind_param('xyz', $sample1, $sample2, $sample3, $sample4); // bind to the parameter
Run Code Online (Sandbox Code Playgroud)
我明白我们写'?' 而不是我们的变量,以便以后可以给出实际值.和mysql为查询执行准备一个计划,而不是变量作为参数给出.
但是,请告诉我这段代码是什么意思?
bind_param('xyz', $sample1, $sample2, $sample3, $sample4);
Run Code Online (Sandbox Code Playgroud)
四个变量以'xyz'作为参数给出......参数'xyz'到底在做什么?有必要写,以后会用吗?我没有发现它在其他地方使用过.
有人能解释一下吗?请帮助.
编辑:
我只想回答这个问题.如果你能解释一下,那么请帮忙:

dec*_*eze 14
我想你理解绑定参数的概念,所以我不打算这样做.尽管如此,您可能需要查看此内容以获取更多背景信息.
用于绑定参数的mysqli API可能不是很优雅.它看起来像这样:
bool mysqli_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] )
Run Code Online (Sandbox Code Playgroud)
这意味着该函数的第一个参数$types,为mysqli提供了参数的类型 /应该将它们视为什么类型的信息.以下是各个参数.
该$types参数是个别字符的字符串,每个字符表示一个类型.有四种类型:i,d,s和b,这代表整数,双,字符串和二进制.因此,如果您想按顺序绑定两个整数和一个字符串,则$type参数必须为iis.然后按实际值跟踪:
$int1 = 42;
$int2 = 11;
$str = 'foo';
$stmt->bind_param('iis', $int1, $int2, $str);
Run Code Online (Sandbox Code Playgroud)
第一个参数指定列数据的类型。例如,如果我们有四列,并且所有列都是字符串类型,则可以这样写:
$stmt->bind_param('ssss', $sample1, $sample2, $sample3, $sample4);
Run Code Online (Sandbox Code Playgroud)
如果一列是整数类型,则使用i而不是s。例如,如果第三列是整数,则编写:
$stmt->bind_param('ssis', $sample1, $sample2, $sample3, $sample4);
Run Code Online (Sandbox Code Playgroud)
指定第一和第二列为字符串(s),第三列为整数(i),第四列为字符串(s)。
对于bind_param()函数的第一个参数,我们使用s字符串类型,i代表整数,代表d双b精度类型,代表Blob。
因此,对于您的情况,sssd意味着第四列是双栏,其余是字符串
| 归档时间: |
|
| 查看次数: |
15110 次 |
| 最近记录: |