[英]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.