Php mysqli_stmt_bind_param试图以字符串形式传递混合变量 foreach($data\u可接受为$key=>$value) { 如果($key!='submit'&&$value!='submit') { $fields_array[]=$key; $values\u数组[]=$value; $placeholder_type.=“s”; $placeholder_num.=“?,”; $complete_array_info.='$data_acceptable'.“['.''.$key.'],”; } } //从数组生成字符串 $fields=内爆(“,”,$fields\u数组); //在列名周围添加“”,示例='user\u name' $values=“”。内爆(“,”,$values_数组)。“”; //删除最后一个,示例=?,?,? $placeholder\u num=substr($placeholder\u num,0,-1); $complete\u array\u info=substr($complete\u array\u info,0,-2); echo$complete_array_info.“”;/输出:$data_acceptable['email'],$data_acceptable['user_name'],$data_acceptable['password'] echo$placeholder_type.“”;//输出:sss $query=“插入到用户(“.$fields”)值(“.$placeholder_num”)”; echo$query; 回显“.”$values.“”; $stmt=mysqli_prepare($dbc,$query); mysqli_stmt_bind_param($stmt,$placeholder_type,$complete_array_info); mysqli_stmt_execute($stmt); $infected_rows=mysqli_stmt_infected_rows($stmt); 如果($infected_rows==1){ 回显“用户输入”; mysqli_stmt_close($stmt); mysqli_close($dbc); }否则{ echo“出现错误”; echo mysqli_错误(); mysqli_stmt_close($stmt); mysqli_close($dbc); }

Php mysqli_stmt_bind_param试图以字符串形式传递混合变量 foreach($data\u可接受为$key=>$value) { 如果($key!='submit'&&$value!='submit') { $fields_array[]=$key; $values\u数组[]=$value; $placeholder_type.=“s”; $placeholder_num.=“?,”; $complete_array_info.='$data_acceptable'.“['.''.$key.'],”; } } //从数组生成字符串 $fields=内爆(“,”,$fields\u数组); //在列名周围添加“”,示例='user\u name' $values=“”。内爆(“,”,$values_数组)。“”; //删除最后一个,示例=?,?,? $placeholder\u num=substr($placeholder\u num,0,-1); $complete\u array\u info=substr($complete\u array\u info,0,-2); echo$complete_array_info.“”;/输出:$data_acceptable['email'],$data_acceptable['user_name'],$data_acceptable['password'] echo$placeholder_type.“”;//输出:sss $query=“插入到用户(“.$fields”)值(“.$placeholder_num”)”; echo$query; 回显“.”$values.“”; $stmt=mysqli_prepare($dbc,$query); mysqli_stmt_bind_param($stmt,$placeholder_type,$complete_array_info); mysqli_stmt_execute($stmt); $infected_rows=mysqli_stmt_infected_rows($stmt); 如果($infected_rows==1){ 回显“用户输入”; mysqli_stmt_close($stmt); mysqli_close($dbc); }否则{ echo“出现错误”; echo mysqli_错误(); mysqli_stmt_close($stmt); mysqli_close($dbc); },php,mysql,prepared-statement,procedural,Php,Mysql,Prepared Statement,Procedural,我试图完成的是构建一个字符串($complete\u array\u info)来存储mysqli\u stmt\u bind\u参数($stmt,$placeholder\u type,$complete\u array\u info)中混合变量的语法 我得到的错误是,存储在$placeholder\u type中的sss正在定义3个字符串变量以通过$placeholder\u num(?,?,?)但$complete\u array\u info($data\u acceptable['em

我试图完成的是构建一个字符串(
$complete\u array\u info
)来存储
mysqli\u stmt\u bind\u参数($stmt,$placeholder\u type,$complete\u array\u info)中混合变量的语法

我得到的错误是,存储在
$placeholder\u type
中的sss正在定义3个字符串变量以通过
$placeholder\u num
(?,?,?)但
$complete\u array\u info
($data\u acceptable['email']、$data\u acceptable['user\u name']、$data\u acceptable['password'))未执行所需的正确参数。如果我将
$complete\u array\u info
的内容粘贴到它的位置,一切正常

我对php和MySQL比较陌生,所以可能有一个完全不同的函数可以使用,我不知道,但所有这些的最终目标是拥有我自己的个人函数,我可以重用它来创建一个准备好的语句,以便通过占位符将任意数量的列插入数据库


任何帮助都将不胜感激。

您不能在mysqli中绑定参数数组。尝试以下方法:-或迁移到PDO。可能重复
$complete_array_info=“$data_acceptable['email'],$data_acceptable['user_name'],$data_acceptable['password']”它只是一个字符串,而不是实际数组。也许我误解了你回复中的绑定数组注释?
            foreach ($data_acceptable as $key => $value)
        {
            if($key != 'submit' && $value != 'submit')
            {
                $fields_array[] = $key;
                $values_array[] = $value;
                $placeholder_type .= "s";
                $placeholder_num .= "?,";
                $complete_array_info .= '$data_acceptable'."['".$key."'], ";

            }
        }


        // Builds strings from arrays
        $fields = implode(", ", $fields_array);
        // Adds '  ' around column names , example = 'user_name'
        $values = "'".implode("', '", $values_array)."'";
        // Removes last , example = ?,?,?
        $placeholder_num = substr($placeholder_num, 0, -1); 
        $complete_array_info = substr($complete_array_info, 0, -2);

        echo $complete_array_info."<br /><br />"; // outputs: $data_acceptable['email'], $data_acceptable['user_name'], $data_acceptable['password']
        echo $placeholder_type."<br /><br />"; // outputs: sss

        $query = "INSERT INTO users (".$fields.") VALUES (".$placeholder_num.")";

        echo $query;

        echo "<br />".$values."<br />"; 

        $stmt = mysqli_prepare($dbc, $query);

        mysqli_stmt_bind_param($stmt, $placeholder_type, $complete_array_info);

        mysqli_stmt_execute($stmt);

        $affected_rows = mysqli_stmt_affected_rows($stmt);

        if($affected_rows == 1){
            echo 'User Entered';
            mysqli_stmt_close($stmt);
            mysqli_close($dbc);
        } else {
            echo 'Error Occurred<br>';
            echo mysqli_error();
            mysqli_stmt_close($stmt);
            mysqli_close($dbc);
        }