我有此代码:
$sql=mysqli_query($con,"SELECT username, password, email FROM users WHERE username=$username"); if(mysqli_num_rows($sql)>=1) { echo "<div class='form'> <h3>Username already in use.</h3></div>"; }
使用此代码时,它将返回以下警告:
警告:mysqli_num_rows()期望参数1为mysqli_result,布尔值在…中给出
为什么它显示此警告,我该如何解决?
您运行查询的方式是错误的。它容易出错,并且总是会给您这样的错误。而且,它也易于进行SQL注入。
将变量直接添加到查询中时,其内容可能会受到干扰,这会导致很多麻烦,从此类错误到SQL注入。要彻底摆脱此类错误,您必须先准备好查询,在变量旁边添加问号,然后分别发送。这样,它将永远不会干扰。
您必须先准备查询,然后绑定变量,然后执行:
$sql = "SELECT username, password, email FROM users WHERE username=?"; $stmt = $con->prepare($sql); $stmt->bind_param("s", $username); $stmt->execute(); $res = $stmt->get_result(); if($res->num_rows()) { echo "<div class='form'> <h3>Username already in use.</h3></div>"; }