簡體   English   中英

PHP准備語句未正確執行

[英]PHP Prepared Statement not executing correctly

到目前為止,我一直在盯着一個問題。

我有一個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種不同的方法,但均未成功。

我猜問題出在這里“ ssssis”。 第五個應該是字符串,最后一個整數。 也許這應該工作?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM