我无法返回行数。我希望我的代码检查用户名是否存在,如果存在,则返回错误。我这样做的方法是,如果num_rows返回一个大于0的数字。我还没有实现那个部分,我只是想让它立即返回行数。这是我目前的代码:
$hostname = ''; //SET SERVER/HOSTNAME
$dbusername = ''; //SET DATABASE USERNAME
$dbname = ''; //SET DATABASE NAME
$dbpassword = ''; //SET DATABASE USERNAME
$link = mysqli_connect($hostname, $dbusername, $dbpassword, $dbname);
if (!$link)
{
$systemerror = 'Connect Error' . mysqli_connect_errno() . mysqli_connect_error();
$error = "there has been an error";
}
$sql = "SELECT username FROM affiliates WHERE username = $username";
$result = mysqli_query($link, $sql, MYSQLI_USE_RESULT);
if (!result)
{
$error = "There was an error with our system. Please contact All Choice Dental or wait a few minutes. Thank you.";
goto error;
}
$row_cnt = $result->num_rows;
echo $row_cnt;
我甚至没有为num_rows返回零,所以有些事情必须是错误的。我知道我可以连接到数据库,因为我可以使用相同的连接插入行。
答案 0 :(得分:1)
$username
永远不会在您的代码中定义,因此查询将以
SELECT username FROM ... username =
同样,由于用户名很可能是一个字符串,因此你也缺少该变量的引号,所以即使设置了它,查询仍然是错误的。 e.g。
$username = 'fred';
会产生
SELECT username FROM affiliates WHERE username = fred
并且您的关联企业表中不太可能有fred
字段。该字段应引用:
SELECT username FROM ... WHERE username = '$username';
你应该认真考虑使用预备语句,因为这种结构容易受到SQL injection attacks的攻击。</ p>
答案 1 :(得分:-1)
你正在混合使用MySQLi OOP和Procedural - 这是一种糟糕的编码风格。
要以程序方式获取行数,请使用mysqli_num_rows($result)