我正在为uni开发一个项目,并且一直在基于的表中使用testing serverto上的以下代码:get all devices``user_id
testing server
get all devices``user_id
public function getAllDevices($user_id) { $stmt = $this->conn->prepare("SELECT * FROM devices WHERE primary_owner_id = ?"); $stmt->bind_param("i", $user_id); $stmt->execute(); $devices = $stmt->get_result(); $stmt->close(); return $devices; }
这在我的测试服务器上运行良好,但是在迁移到大学项目服务器时返回此错误:
Call to undefined method mysqli_stmt::get_result()
一些谷歌搜索建议使用bind_result()代替,get_result()但我不知道如何all fields在表中做到这一点。大多数示例仅显示返回one field
bind_result()
get_result()
all fields
one field
任何帮助将非常感激
假设您无法使用get_result()并且想要一系列设备,则可以执行以下操作:
public function getAllDevices($user_id) { $stmt = $this->conn->prepare("SELECT device_id, device_name, device_info FROM devices WHERE primary_owner_id = ?"); $stmt->bind_param("i", $user_id); $stmt->execute(); $stmt->bind_result($id, $name, $info); $devices = array(); while($stmt->fetch()) { $tmp = array(); $tmp["id"] = $id; $tmp["name"] = $name; $tmp["info"] = $info; array_push($devices, $tmp); } $stmt->close(); return $devices; }
这将创建一个临时数组并将其每一行中的数据存储在其中,然后将其推入主数组。据我所知,您不能SELECT *在中使用bind_result()。取而代之的是,您将不得不烦恼地键入所有想要的字段。SELECT
SELECT *
SELECT