1

我无法返回行数。我希望我的代码检查用户名是否存在,如果存在则返回错误。我要解决的方法是如果 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 的归零,所以肯定有问题。我知道我可以连接到数据库,因为我可以使用相同的连接插入行。

4

2 回答 2

1

$username从未在您的代码中定义,因此查询结果为

SELECT username FROM ... username =

同样,由于用户名很可能是一个字符串,因此您也缺少围绕该变量的引号,因此即使设置了它,查询仍然是错误的。例如

$username = 'fred';

会产生

SELECT username FROM affiliates WHERE username = fred

而且您的联属会员表中不太可能有fred字段。应引用该字段:

SELECT username FROM ... WHERE username = '$username';

并且您应该认真考虑使用准备好的语句,因为这种结构容易受到SQL 注入攻击

于 2013-07-05T21:26:52.930 回答
-1

您正在混合 MySQLi OOP 和 Procedural - 这是一种糟糕的编码风格。

要以程序方式获取行数,请使用mysqli_num_rows($result)

于 2013-07-05T21:25:18.357 回答