您好,我试图在函数中使用预准备语句。我有以下功能,它应该根据输入国家/地区的ID返回数据库中国家/地区的详细信息 - 然后使用数组获取公司名称。当我使用预准备语句时,我不知道如何从函数输出要在数组中使用的数据。我知道我遗漏了一些基本的东西。请参阅下文。
<?php
global $conn, $dbname, $username,$servername, $password;
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "country";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
&#39; connect.php&#39;文件包含以下内容:
function findCountryname($countryID){
$result = mysql_query("SELECT * FROM `countries` WHERE `id`=' $countryID '
and `pic` != 'nothing' ");
return $result;
}
这是原来的功能:
{{1}}
答案 0 :(得分:0)
您可以使用mysqli's fetch_assoc
从查询中获取结果数据并将其存储在数组中,然后返回该数组。
所以你的功能现在变成了: -
function findCountryname($countryID){
include 'connect.php';
$stmt = $conn->prepare("SELECT * FROM countries WHERE id=? and
pic!='NULL'");
$stmt->bind_param("i", $countryID);
$stmt->execute();
$data = $stmt->fetch_assoc();
return $data;
}
答案 1 :(得分:0)
没有理由在函数中使用全局变量或包含。如果您坚持使用过程代码,则应将mysqli对象作为参数注入函数中。
语句执行后,您需要检索mysqli结果对象以进行操作。如果您刚刚获得第一行,则以下示例将起作用。如果您期望多行,则必须在循环中调用fetch_assoc,因为它一次只能检索一行。
function findCountryname($countryID, mysqli $conn) {
$stmt = $conn->prepare("SELECT * FROM countries WHERE id=? and pic!='NULL'");
$stmt->bind_param("i", $countryID);
$stmt->execute();
// Get the mysqli result object
$result = $stmt->get_result();
// Return the first row of data in an associative array
$data = $result->fetch_assoc()
return $data;
}