douzhi3779 2014-06-20 13:20
浏览 29

没有为准备好的声明中的参数提供数据

Auto generated Data binding "No data Supplied for parameters"

I've created a script to find all of the $_POSTvalues sent by a form, create a query, and bind the data for submission via MySQLi

It works well up until the end and results in an error message:

"No data supplied for parameters in prepared statement"

This has me stumped as my echo statements seem to show that the data IS passed and processed.

<?php
$user = "user";
$pw = "pw";
$url = "myURL"; 
$db = "myDB";
/*** create a new mysqli object with default database***/
$mysqli = @new mysqli($url, $user, $pw, $db);

/* check connection */ 
if(!mysqli_connect_errno())
    {
    /*** if we are successful ***/
    echo 'Connected Successfully<br />';

    /*** Create the SQL statement ***/
   /***Put each variable on separate line so I can use spreadsheet
    this helps make sure the number of values is equivalent in all parts ****/
    $type = "'";
    $params = "";
    $valholder = "";
    /*** Automatically read the variables sent from study software and generate the MySQLi binding */
    foreach ($_POST as $param_name => $param_val) {
    if(isset($_POST[$param_name])){
    if($param_val==='Submit'){
    }
    else{
    if(is_numeric($param_val)){
    $type.="i";
    $vals.=$param_val.",";
    }
    else{
    $type.="s";
    $vals.="'".$param_val."',";
    }
    //echo "Param: $param_name; Value: $param_val<br />
";
    $valholder.="?,";
    $params.=$param_name.",";
    }
    }

    }


    $vals = rtrim($vals, ",");
    $params = rtrim($params, ",");
    $valholder = rtrim($valholder, ",");
    $type.= "'";
    echo $type.'<br />';
    echo $vals.'<br />';
    /*** Initialize a statement object for mysqli_stmt_prepare() ***/
    $stmt = mysqli_stmt_init($mysqli);
    /*** prepare the statement ***/
    $sql = 'INSERT INTO myTable ('.$params.') VALUES('.$valholder.')';
    echo $sql.'<br/>';

    if (mysqli_stmt_prepare($stmt, $sql))
        {
        echo 'mysqli successfully prepared<br/>';
        /*** bind the parameters ***/
        }
        else{
        //die( 'stmt error: '.mysqli_stmt_error($stmt) );
        Echo 'error with binding <br />';
        }

        mysqli_stmt_bind_param($stmt,$type,$vals);

        /*** set parameters and execute ***/
    if ( !mysqli_execute($stmt) ) {
          die( 'stmt error: '.mysqli_stmt_error($stmt) );
        }   

   }
else
    {
    /*** if we are unable to connect ***/
    echo 'Unable to connect';
    exit();
    }
?>

The echo output is:

  • Connected Successfully
  • 'ssi'
  • 'Assessment 1','Answer 1',111222333
  • INSERT INTO myTable (Assessment,CorrectAnswers,CRN) VALUES(?,?,?)
  • mysqli successfully
  • prepared stmt error: No data supplied for parameters in prepared statement

What am I missing?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
    • ¥20 Java-Oj-桌布的计算
    • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
    • ¥20 有人知道这种图怎么画吗?
    • ¥15 pyqt6如何引用qrc文件加载里面的的资源
    • ¥15 安卓JNI项目使用lua上的问题
    • ¥20 RL+GNN解决人员排班问题时梯度消失
    • ¥60 要数控稳压电源测试数据
    • ¥15 能帮我写下这个编程吗
    • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路