我有一个用于直接调用的PHP脚本,用于检查密钥是否在黑名单数据库中。但是,无论我尝试什么,包括mysql_num_rows,它总是返回该值不存在(返回'OK')...
我做错了什么?
<?php
$pin = $_GET['keycode'];
$cn=mysqli_connect('localhost', 'root', 'password', 'serials') or die($cn->connect_error);
$sql = "SELECT keycode FROM blacklist";
$rs = $cn->query($sql) or die(mysqli_error($cn));
while($row = mysqli_fetch_array($rs)){
if ($row[keycode] == $pin) {
echo "BL";
return;
}
}
echo "OK";
$cn->close();
?>
答案 0 :(得分:3)
将您的代码更改为:
<?php
$cn = mysqli_connect('localhost', 'root', 'password', 'serials') or die($cn->connect_error);
$pin = $_GET['keycode'];
$sql = $cn->prepare("SELECT * FROM blacklist WHERE keycode = ?;");
$sql->bind_param('s', $pin);// set $pin to type string and bind it to the query
$sql->execute();// execute query
$result = $sql->get_result();// get the result
if(mysqli_num_rows($result)>0){
echo "Keycode Blacklisted";// inform that keycode found in blacklist
}
$cn->close();
?>
您的代码存在问题:
$row[keycode]
添加单引号,因此请将其更改为$row['keycode']
$row['acolumn']
时仍然将结果视为多行。另外,您没有使用$pin
来检查平等性。使用SELECT * FROM blacklist WHERE keycode = ?;
,您将检查是否相等而不需要if
条件。这就是我的代码更改的解释。