Php 使用产品密钥检查数据库行中是否存在数据
我对代码有问题。若数据库行中的数据存在,它就可以工作。但如果数据不存在,则它也会给出消息,即12345-12345-12345-12345(示例密钥)已注册。用另一把钥匙 这是代码:Php 使用产品密钥检查数据库行中是否存在数据,php,mysql,Php,Mysql,我对代码有问题。若数据库行中的数据存在,它就可以工作。但如果数据不存在,则它也会给出消息,即12345-12345-12345-12345(示例密钥)已注册。用另一把钥匙 这是代码: $namecheck = mysql_query("SELECT pkey FROM license_key WHERE pkey ='$userEnteredProductKey'"); if(is_resource($namecheck) && mysql_num_rows($
$namecheck = mysql_query("SELECT pkey FROM license_key WHERE pkey ='$userEnteredProductKey'");
if(is_resource($namecheck) && mysql_num_rows($namecheck) > 0 ){
$sql_result = mysql_fetch_assoc($namecheck);
echo $userEnteredProductKey . " already registered . use another key";
}
如果我出错,请纠正我。首先,在做任何其他事情之前,请逐步淘汰mysql*函数,并切换到使用PDO或MySQLi。尤其是当您的项目正在处理串行键或某些唯一键时。到目前为止,您的查询很容易被注入extraSQL黑客攻击 回到问题: 由于它执行echo语句,这意味着如果语句被执行,这意味着is_resource()和mysql_num_rows()都返回true 为什么不检查一下数据库,再次查看是否存在一条记录12345-12345-12345-12345,似乎mysql\u num\u rows返回>0
另外,为什么不使用var_dump$sql\u result并查看它打印的内容呢?不建议使用mysql\u查询。试试下面这个
$mysqli = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_SELECT, DB_PORT);
$stmt = $mysqli->prepare("SELECT pkey FROM license_key WHERE pkey =?");
$stmt->bind_param('s',$userEnteredProductKey) ;
$stmt->execute();
$stmt->bind_result( $pKey );
$stmt->fetch();
$stmt->close();
if($pkey!=''){
echo $userEnteredProductKey . " already registered . use another key";
}
错误消息是什么?可能您需要检查密钥是否有效以及是否已被使用。license_key表中是否有该字段?表中是否有该字段?是的,表中有该字段。然后您需要询问数据库,例如:从license_key中选择pkey,其中pkey='$userEnteredProductKey',used=0谢谢您的回答。但它不起作用。它取代了排。谢谢你的建议。我现在正在使用MySQLi,但它仍然在使用。这是我的代码:
$query=mysqli\u query($mysqli,“从许可证\u密钥中选择custname,其中pky='$userEnteredProductKey');如果($row=mysqli_fetch_assoc($query)){echo$row['custname'];echo(“已使用的注册密钥”);}
任何人都能告诉我哪里做错了。