Php 查询未发送

Php 查询未发送,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,我正试图在已经准备好的语句之后再创建一个准备好的语句。我得到一个错误,说变量的数量不匹配。我认为这是因为“准备”部分中的“日期要求”。我已经在另一个查询中这样做了,它没有抛出错误。我不确定这是否是导致代码中断的原因,但这并没有发送第二个查询的任何内容。第一个仍然是罚款 警告:mysqli_stmt::bind_param:变量数量与第137行/home4/pfarley1/public_html/sundayfundayleague.com/register.php中准备好的语句中的参数数量不匹

我正试图在已经准备好的语句之后再创建一个准备好的语句。我得到一个错误,说变量的数量不匹配。我认为这是因为“准备”部分中的“日期要求”。我已经在另一个查询中这样做了,它没有抛出错误。我不确定这是否是导致代码中断的原因,但这并没有发送第二个查询的任何内容。第一个仍然是罚款

警告:mysqli_stmt::bind_param:变量数量与第137行/home4/pfarley1/public_html/sundayfundayleague.com/register.php中准备好的语句中的参数数量不匹配

第137行是

    $stmt->bind_param('iisssssi', $id, $user_id, $firstname, $lastname, $email, $username, $status, $group);
这是我在页面上的两个查询的代码。第一个很好用,但是第二个我就犯了这个错误

if(isset($_POST['submit'])){
   $id = ( isset( $_SESSION['id'] ) ? $_SESSION['id'] : "" );
   $user_id = ( isset( $_SESSION['id'] ) ? $_SESSION['id'] : "" );
   $firstname = Input::get('firstname');
   $payment_name = "Owes";
   $payment_id = 1;
   $payment_amount = 0;

//Query to add user's name to owes db table

$con = mysqli_connect("localhost","root","","db");
/* check connection */
   if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }
$stmt = $con->prepare("INSERT INTO payment_status 
        (id, user_id, firstname, payment_name, payment_id, payment_amount) 
        VALUES 
        (?, ?, ?, ?, ?, ?)");

    if ( false===$stmt ) {
  // Check Errors for prepare
  die(' Owes DB prepare() failed: ' . htmlspecialchars($con->error));
}
$stmt->bind_param('iissii', $id, $user_id, 
                 $firstname, $payment_name, 
                 $payment_id, $payment_amount);
    if ( false===$stmt ) {
      // Check errors for binding parameters
      die('Owes DB bind_param() failed: ' . htmlspecialchars($stmt->error));
    }
$stmt->execute();

    if ( false===$stmt ) {
      die('execute() failed: ' . htmlspecialchars($stmt->error));
    }   
}

//Query that adds user to User Request db table

    if(isset($_POST['submit'])){
        $id = ( isset( $_SESSION['id'] ) ? $_SESSION['id'] : "" );
        $user_id = ( isset( $_SESSION['user'] ) ? $_SESSION['user'] : "" );
        $firstname = Input::get('firstname');
        $lastname = Input::get('lastname');
        $email = Input::get('email');
        $username = Input::get('username');
        $status = "Pending";
        $group = 1;


        $con = mysqli_connect("localhost","root","","db");
    /* check connection */
       if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
            exit();
        }
        $stmt2 = $con->prepare("INSERT INTO user_requests 
        (id, user_id, firstname, lastname, email, username, status, `group`, date_requested) 
        VALUES (?, ?, ?, ?, ?, ?, ?, ?, NOW())");
            if ( false===$stmt2 ) {
          // Check Errors for prepare
          die('User Request prepare() failed: ' . htmlspecialchars($con->error));
            }
        $stmt->bind_param('iisssssi', $id, 
       $user_id, $firstname, $lastname, $email, 
       $username, $status, $group);
            if ( false===$stmt2 ) {
              // Check errors for binding parameters
              die('User Request bind_param() failed: ' . htmlspecialchars($stmt->error));
            }
        $stmt->execute();
            if ( false===$stmt2 ) {
              die('User Request execute() failed: ' . htmlspecialchars($stmt->error));
            }
    }   
有人知道我做错了什么吗

像这样

    if (!$stmt2->bind_param('iisssssi', $id, $user_id, $firstname, $lastname, $email, $username, $status, $group) {
    die('User Request bind_param() failed...);
          // Check errors for binding parameters
          die('User Request bind_param() failed: ' . htmlspecialchars($stmt->error));
        }

这是一个打字错误或复制/粘贴错误。在第二条语句中,使用变量$stmt2,但在$stmt->bind_param,$stmt->execute上调用bind_param。其他一切看起来都是正确的。请注意,在bind_参数之后检查iffalse===$stmt2,execute调用将无法正常工作。在这些情况下,$stmt2中的对象永远不会设置为false,但方法调用将返回false。相反,检查它就像$stmt->绑定参数。。。{die'User Request bind_param失败了…;executeThanks的帮助也失败了!我不敢相信我漏掉了。我用你建议的更新了我的问题…在底部。我会这样构造它吗?是的,这是确切的想法,但我想你漏掉了if.bind_param和execute的结尾都返回false,但两者都没有返回false能够修改变量$stmt2使其为false。