Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP和mysqli编写的语句_Php_Mysqli - Fatal编程技术网

PHP和mysqli编写的语句

PHP和mysqli编写的语句,php,mysqli,Php,Mysqli,我创建此函数是为了从数据库表中选择数据: function data_users($dbc,$id){ $q = "SELECT * FROM users WHERE id = $id"; $r = mysqli_query($dbc,$q); return $r; } 我如何创建相同的函数,但这次使用的是prepared语句?之后,a通常会像这样调用函数: $result = data_users($dbc,$id); while ($users_info =

我创建此函数是为了从数据库表中选择数据:

function data_users($dbc,$id){    
    $q = "SELECT * FROM users WHERE id = $id";
    $r = mysqli_query($dbc,$q);
    return $r;
}
我如何创建相同的函数,但这次使用的是prepared语句?之后,a通常会像这样调用函数:

$result = data_users($dbc,$id);
while ($users_info = mysqli_fetch_assoc($result)) {
    //do something
}
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();
}

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

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

$result = data_users($dbc,$id);
while ($users_info = mysqli_fetch_assoc($result)) {
    //do something
}
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);
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();
}

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

我不理解你的问题。我读过它,知道如何创建一个准备好的语句,但我不知道如何将它转换成函数,这样我就可以多次调用它@jeroencan。请以过程式发送它,非常感谢您的帮助。如果您对这个答案投了赞成票,请撤回您的投票。这个密码行不通。现在看看我的答案。但是我可以给你一个建议吗,下次请阅读文档,这不是一个代码编写服务。我很抱歉,我无意粗鲁。我正在自学如何编写代码,只是想寻求一些帮助来理解@infated感谢您的帮助,如果我使用(mysqli_connect)函数连接到数据库,我可以使用对象语法吗?或者我需要将其更改为(新的mysqli)是的,您可以使用任何语法,没关系。你真正关心的是mysqlnd驱动程序的可用性。如果它不可用,最好忘记mysqli,开始使用PDO