我对此感到非常沮丧。我试图使用mysqli创建一个包含列值的数组。现在,当我回复所返回的内容时,它什么都不打印。我已经尝试了很多我无法弄清楚的事情。
<?php
class Database {
public $dbHost = '';
public $dbUser = '';
public $dbPass = '';
public $dbName = '';
public $db;
public function __construct(){
$this->dbConnect();
}
public function dbConnect(){
$this->db = new mysqli($this->dbHost, $this->dbUser, $this->dbPass, $this->dbName);
/* check connection */
if (mysqli_connect_errno()){
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}else{
echo 'connection made';
}
}
public function q($sql){
$query = $sql;
self::preparedStatement($query);
}
public function preparedStatement($query){
$i= 0; //index
$result = array();
if ($stmt = $this->db->prepare($query)){
/* execute statement */
if($stmt->execute()) {
$stmt->bind_result($name);
while($stmt->fetch()) {
$result[0] = $name;
}
} else
echo "error";
/* close statement */
$stmt->close();
} else {
echo "Prepare failed: (" . $stmt->errno . ") " . $stmt->error;
}
return $result;
}
public function __destruct(){}
}
### Test code
$db = new Database();
$res = $db->q("SELECT name FROM test");
echo $res[0];
?>
答案 0 :(得分:1)
首先,删除0
循环中的while
。您希望将值一个接一个地存储在数组中,您正在执行的操作始终是覆盖数组中的第一个值,并且需要将从fetch()
获取的值存储在临时数组中。
while($row = $stmt->fetch(MYSQLI_ASSOC)) {
$result[] = $row['name'];
}
第二,您需要使用q()
函数返回一些值,因此请将最后一个语句更改为
return self::preparedStatement($query);
请花一些时间在谷歌上搜索这个并查看其他人如何做的例子。