PHP和mysqli准备声明

时间:2016-09-19 07:28:59

标签: php mysqli

我创建了这个函数来从数据库表中选择数据:

function data_users($dbc,$id){    
    $q = "SELECT * FROM users WHERE id = $id";
    $r = mysqli_query($dbc,$q);
    return $r;
}

如何创建相同的功能,但这次使用预处理语句?之后,通常会调用这样的函数:

$result = data_users($dbc,$id);
while ($users_info = mysqli_fetch_assoc($result)) {
    //do something
}

更改后我可以使用相同的方法吗?

2 个答案:

答案 0 :(得分:1)

请注意,您只能编写PHP mysqli构建在mysqlnd驱动程序上的函数。在这种情况下,您可以这样写:

function data_users($dbc,$id){    
    $sql = "SELECT * FROM users WHERE id = ?";
    $stmt = $dbc->prepare($sql);
    $stmt->bind_param("i",$id);
    $stmt->execute();
    $result = $stmt->get_result();
    return $result->fetch_assoc();
}

请注意,您不应该害怕对象语法,它非常简单。

答案 1 :(得分:0)

if ($stmt = mysqli_prepare($db, "SELECT * FROM users WHERE id = ?")) {
mysqli_stmt_bind_param($stmt, "i", $id);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $result);
mysqli_stmt_fetch($stmt);