0

我想要的是用准备好的语句编写这段代码:

if (mysqli_num_rows(mysqli_query($link,"select name from accounts where name='$username'"))==1)
        {
            // some actions
        }

那么,该怎么做呢?

我知道如何制作准备好的"INSERT INTO"语句,因为我不需要将mysqli_query结果放入 php 变量中,但是如何保存"SELECT"准备语句以在mysqli_num_rows($result)之后运行?

编辑:我想要做的是使用准备好的语句执行 mysqli_query(),同时将结果保存到 php $result 变量中。怎么做?

4

1 回答 1

1

永远不应该像这样链接数据库操作。您假设查询将始终成功。这是不好的做法。永远不要假设成功。始终假设操作会失败,并将成功视为惊喜。

由于您像这样以菊花链方式连接数据库调用,因此您实际上从未捕获mysqli_query()将返回的结果句柄,因此实际上您正在运行查询,然后丢弃其结果。

你应该有更多类似的东西

$result = mysqli_query($link, "....") or die(mysqli_error());
if (mysqli_num_rows($result)) == 1) {
    $row = mysqli_fetch_assoc($result);
    $anem = $row['name'];
}

除非您采取了此代码中未显示的步骤,否则您很容易受到SQL 注入攻击

至于准备好的声明的东西:

$stmt = mysqli_prepare($link, 'SELECT ... WHERE name=?');
mysqli_stmt_bind_param($stmt, 's', $name);
mysqli_stmt_execute($stmt);

$rows = mysqli_stmt_num_rows($stmt);

mysqli_stmt_bind_result($stmt, $fetched_name);

mysqli_stmt_fetch($stmt); // $fetched_name now contains the name from the DB
于 2013-08-28T21:49:55.587 回答