Я пробовал разные вещи, чтобы заставить этот короткий код работать. Он делает это, подключаясь к базе данных через PDO, а затем выбирает все строки, которые соответствуют переменной post. Если количество строк превышает 0, обновите строки лицензионной клавиши, которые будут использоваться, а echo true.
Я пробовал как rowcount, так и fetchcolumn и count (*) для sql, и ни один из показанных различий. В самой MySQL я использовал действительный лицензионный ключ, и он действительно возвращает одну строку.
<?php if(isset($_POST['licensekey'])) { try { $db = new PDO("mysql:host=localhost;dbname=validation", "test", "test"); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { die($e->getMessage()); } $search = ("SELECT * FROM validated WHERE activationkey=:lk AND used='0'"); $result = $db->prepare($search); $result->bindParam(":lk", $_POST['licensekey']); $result->execute(); if($result->rowCount() > 0) { $used = ("UPDATE validated SET used='1' WHERE validated.activationkey=:lk"); $result2 = $db->prepare($used); $result2->bindParam(":lk", $_POST['licensekey']); $result2->execute(); echo "true"; } else { echo "false"; } $db = null; } else { exit(); } ?>
Каждый раз, когда он вернет ложь, что бы ни случилось.
Что, по-видимому, здесь?