我想要的是用准备好的声明编写这段代码:
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 $结果变量中。怎么做?
答案 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