sql准备语句获取结果到php变量

时间:2013-08-28 21:42:31

标签: php sql select statements

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

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

那么,怎么做?

我知道如何编写一个准备好的"INSERT INTO"语句,因为我不需要将mysqli_query结果转换为php变量,而是如何保存"SELECT" prepare语句来运行紧接着mysqli_num_rows($result)

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

1 个答案:

答案 0 :(得分: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 injection attacks的攻击。<​​/ p>

至于准备好的陈述内容:

$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