PHP 准备好的语句没有正确执行

我一直盯着一个问题很久了。


我有一个 PHP 文件,它正在准备插入查询、绑定参数并执行查询(简单)。


询问


$stmt = $db->prepare("SELECT insert_user(?, ?, ?, ?, ?, ?)");

出于某种原因,execute 返回的 $stmt 对象为受影响的行返回 -1。如果我更改代码以使用我想要绑定的值执行插入查询,而不是硬编码,则查询工作得很好。


硬编码查询


$db->query("SELECT insert_user('Test', 'Account', 'testAccount@testApp.io', 'testAccount9', '1980-01-01', 1)");

bind_param 部分出了点问题。我打开了错误并且也在检查 mysqli 错误,但两者都没有返回错误。


PHP文件


...


$postdata = file_get_contents("php://input");


if (isset($postdata) && !empty($postdata)) {

  $request = json_decode($postdata);

}


if (

  validate_string($request->fname) 

  && validate_string($request->lname) 

  && validate_integer(intval($request->gender))) {

      $stmt = $db->prepare("SELECT insert_user(?, ?, ?, ?, ?, ?)");

      if ($stmt) {

        $stmt->bind_param("ssssis", $first_name, $last_name, $email, $password, $gender, $dob);

        $first_name = $request->fname;

        $last_name = request->lname;

        $email = $request->email;

        $password = password_hash($request->password, PASSWORD_BCRYPT);

        $gender = intval($request->gender);

        $dob = $request->dob;


        $stmt->execute();

        if ($stmt->affected_rows > 0) {

          echo toJson('success');

        } else {

          echo toJson('fail');

        }

     } else {

         echo toJson("Prepare failed: (" . $db->errno . ") " . $db->error);

     }

} else { 

   echo toJson('fail - passed data not valid');

}

...

我觉得此时的错误一定很简单,但我已经尝试了至少 23,432 种不同的东西,但都没有成功。


潇湘沐
浏览 191回答 1
1回答

慕神8447489

我猜问题出在这里 "ssssis" 。第五个应该是字符串,最后一个整数。也许这应该有效?
打开App,查看更多内容
随时随地看视频慕课网APP