Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用产品密钥检查数据库行中是否存在数据_Php_Mysql - Fatal编程技术网

Php 使用产品密钥检查数据库行中是否存在数据

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($

我对代码有问题。若数据库行中的数据存在,它就可以工作。但如果数据不存在,则它也会给出消息,即12345-12345-12345-12345(示例密钥)已注册。用另一把钥匙

这是代码:

   $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*函数,并切换到使用PDOMySQLi。尤其是当您的项目正在处理串行键或某些唯一键时。到目前为止,您的查询很容易被注入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(“已使用的注册密钥”);}
任何人都能告诉我哪里做错了。