Когда пользователь пытается зарегистрироваться, я проверяю первое табличное устройство, если есть какой-либо доступный device_id, я хочу предоставить пользовательскую пробную версию = 0, и если нет никакого device_id, я хочу вставить device_id в эту таблицу и хочу, чтобы пользовательская пробная версия = 1, но в настоящее время она всегда установите trial = 1 и вставьте device_id в таблицу device. Мой текущий код, как показано ниже
$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);
Дайте мне знать, если кто-нибудь сможет исправить мою ошибку. Спасибо
@AlexHowansky Спасибо за ваш комментарий и предложение. Я сделаю это до того, как начну жить. Дайте мне знать, если вы можете помочь мне решить проблему с моим местонахождением. Спасибо
Вы также должны убедиться, что поле device_id имеет уникальное ограничение в схеме базы данных.
Если device_id является строкой, вам понадобятся кавычки вокруг значения при выборе (или используйте подготовленные операторы)
@NigelRen Вы решили мою проблему. Спасибо






SELECT * FROM device
Или же
SELECT columnA, columnB FROM device
Ваш первый запрос недействителен, потому что он не говорит, какие столбцы он хочет выбрать из таблицы устройств.
Привет! Это все та же проблема.
Вам нужно сделать "SELECT device_id FROM ..." в этом первом, затем
Я давно не использовал неподготовленные операторы. Я придерживаюсь подготовки, связывания параметров, связывания результата и выполнения. Это позволяет очень легко увидеть, где все работает и работает. wbr.bz/QueryPro - хорошее место для начала
Вам обоим нужно указать столбец для выбора, а также включить кавычки вокруг device_id ...
$trial_sql = "SELECT * FROM device WHERE device_id = '$serial'";
Цитаты не были бы проблемой, если бы вы использовали заранее подготовленные операторы.
Переломить ситуацию против обучения / пропаганды небрежных и опасных методов кодирования. Если вы отправите ответ без подготовленных заявлений вы можете подумать об этом перед публикацией. Дополнительно более ценный ответ исходит из демонстрации OP правильного метода.
Ваш код уязвим для атак SQL-инъекция. Вы должны использовать подготовленные операторы с привязанными параметрами через mysqli или PDO. У Эта почта есть несколько хороших примеров.