Php MySQLi条件无法正常工作
当用户尝试注册时,我正在检查第一个表设备,如果有任何可用的设备\u id,我想提供用户试用=0,如果没有任何设备\u id,我想在该表中插入设备\u id,并希望用户试用=1,但当前它总是设置试用=1,并在表设备中插入设备\u id。 我当前的代码如下所示Php MySQLi条件无法正常工作,php,mysql,mysqli,Php,Mysql,Mysqli,当用户尝试注册时,我正在检查第一个表设备,如果有任何可用的设备\u id,我想提供用户试用=0,如果没有任何设备\u id,我想在该表中插入设备\u id,并希望用户试用=1,但当前它总是设置试用=1,并在表设备中插入设备\u id。 我当前的代码如下所示 $serial = $POST["serial"]; $fcm = $POST["fcm"]; $trial = 0; $trial_sql = "SELECT FROM device WHERE device_id
$serial = $POST["serial"];
$fcm = $POST["fcm"];
$trial = 0;
$trial_sql = "SELECT FROM device WHERE device_id = $serial";
$trial_result = mysqli_query($conn, $trial_sql);
if (mysqli_num_rows($trial_result) == 0) {
$device_sql = "INSERT INTO device(device_id) VALUES('$serial')";
if($conn->query($device_sql)){
$trial = 1;
}
}
$sql = "INSERT INTO user(name, email, password, device_id, trial, fcm) VALUES('$name', '$email', '$password', '$serial', $trial, '$fcm')";
if($conn->query($sql)) {
$response["code"] = 1;
}
return json_encode($response);
如果有人能纠正我的错误,请告诉我。
谢谢
或
您的第一个查询无效,因为它没有说明要从设备表中选择哪些列 双方都需要指定要选择的列,并在设备id周围加引号
$trial_sql = "SELECT * FROM device WHERE device_id = '$serial'";
如果使用预先准备好的语句,则引号不会成为问题。您的代码容易受到攻击。您应该通过或使用带绑定参数的准备语句。有一些很好的例子。@AlexHowansky谢谢你的评论和建议。在我活着之前我会做的。让我知道,如果你能帮助我解决我的问题。感谢您还应该确保device_id字段在数据库架构中具有唯一的约束。如果device_id是字符串,则需要在select或use prepared中的值周围加引号statements@NigelRen你解决了我的问题。谢谢!这仍然是一个问题。您需要从中选择设备\u id。。。在第一个例子中,我已经有一段时间没有使用未准备好的语句了。我坚持准备、绑定参数、绑定结果和执行。它使我们很容易看到所有东西的去向和运作方式。是一个很好的开始扭转教学/传播草率和危险的编码实践的潮流的地方。如果你在没有准备好陈述的情况下发布了答案。另外。
SELECT columnA, columnB FROM device
$trial_sql = "SELECT * FROM device WHERE device_id = '$serial'";