如何解决MySQLi,PHP可动态生成自动的prepareStatement
我的基本问题是为数据库请求生成自动准备的语句
$this->stmt_prep->bind_param("sss",$input[0],$input[1],$input[X]);
我为该请求创建了2个“变量”:
- 数据类型“ ssss”
- 用户输入字段为“ $ Array_as_single_Values”
假设:
$this->stmt_prep->bind_param("sss",$Array_as_single_Values);
$Array_as_single_Values = "Value1","Value2","ValueX"
我将UserInput读出为
$Value = Array[$input1=> value1,$input2=> value2,$inputX=> valueX]
怎么可能将此数组的每个值转换为变量或其值
预期结果:
$Array_as_single_Values [$input1 => "value1";
$input2 => "value2";
$inputX => "valueX";] //how to Convert this to needed Data?
$this->stmt_prep->bind_param("sss",$Array_as_single_Values);
与:
$this->stmt_prep->bind_param("sss",$input1,$input2,$inputX);
或
$this->stmt_prep->bind_param("sss","value1","value2","valueX");
目的:如果我有100个不同的输入值,则不必重新编写所有语句
解决方法
使用splat运算符...
:
$this->stmt_prep->bind_param("sssssssss",...$Array_as_single_Values);
小例子:
function foo ($a,$b,$c)
{
echo "$a $b $c";
}
$arr = [ "hello","world","42" ];
foo(...$arr); // output hello world 42
没有运算符,这将导致错误“致命错误:Uncaught ArgumentCountError:函数foo()的参数太少了”
如果您想自动生成"s"
,并且确定,您将仅使用VARCHAR类型,则可以这样重写函数调用:
$this->stmt_prep->bind_param(str_repeat("s",count($Array_as_single_Values)),...$Array_as_single_Values);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。