PHP准备的语句执行不正确
我已经盯着一个问题很久了 我有一个PHP文件,它正在准备插入查询、绑定参数并执行查询(简单) 查询PHP准备的语句执行不正确,php,mysqli,Php,Mysqli,我已经盯着一个问题很久了 我有一个PHP文件,它正在准备插入查询、绑定参数并执行查询(简单) 查询 $stmt = $db->prepare("SELECT insert_user(?, ?, ?, ?, ?, ?)"); $db->query("SELECT insert_user('Test', 'Account', 'testAccount@testApp.io', 'testAccount9', '1980-01-01', 1)"); 出于某种原因,execute返回的$
$stmt = $db->prepare("SELECT insert_user(?, ?, ?, ?, ?, ?)");
$db->query("SELECT insert_user('Test', 'Account', 'testAccount@testApp.io', 'testAccount9', '1980-01-01', 1)");
出于某种原因,execute返回的$stmt对象将为受影响的行返回-1。如果我将代码更改为仅使用我想要绑定的值执行插入查询,改为硬编码,则查询工作正常
硬编码查询
$stmt = $db->prepare("SELECT insert_user(?, ?, ?, ?, ?, ?)");
$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');
}
...
我觉得这一点上的错误一定很简单,但我至少尝试了23432种不同的方法,但都没有成功。我猜问题出在这里“ssssis”。
第五个应该是字符串,最后一个整数。也许这应该行得通?我猜问题出在这里“ssssis”。
第五个应该是字符串,最后一个整数。也许这应该行得通?
选择!=<代码>插入
。请参阅检查插入查询的语法---insert-INTO-table(column)VALUES(:column)
是否已启用mysqli错误报告@A您指的是选择插入用户()部分吗?SELECT
!=<代码>插入
。请参阅检查插入查询的语法---insert-INTO-table(column)VALUES(:column)
是否已启用mysqli错误报告@a您指的是选择插入用户()部分吗?如果您查看放入第5个绑定(性别)中的值,则使用$gender=intval($request->gender)设置该值代码>@Shir Gans我正在数据库中传递一个性别整数值。Date是一个由insert_用户函数转换为日期的字符串。对,但是OP的硬编码查询
,它们使用性别1
作为最终参数。OMG,就是这样!你们真是浪费时间对不起!my DB中的insert_函数将DOB作为第五个参数,性别作为最后一个参数。如果查看放入第五个绑定(性别)中的值,则使用$gender=intval($request->gender)设置该值代码>@Shir Gans我正在数据库中传递一个性别整数值。Date是一个由insert_用户函数转换为日期的字符串。对,但是OP的硬编码查询
,它们使用性别1
作为最终参数。OMG,就是这样!你们真是浪费时间对不起!my DB中的insert_函数将DOB作为第5个参数,性别作为最后一个参数。