Php 以json编码从数据库添加数组
我想将数据库中的所有数组添加到一个json编码中,稍后再对其进行解码。。但我遇到了一件我不知道如何修复的事情 我试图将sql查询中的所有数组添加到一个数组中,然后用其中的所有数组对该数组进行编码 我当前的代码:Php 以json编码从数据库添加数组,php,arrays,json,Php,Arrays,Json,我想将数据库中的所有数组添加到一个json编码中,稍后再对其进行解码。。但我遇到了一件我不知道如何修复的事情 我试图将sql查询中的所有数组添加到一个数组中,然后用其中的所有数组对该数组进行编码 我当前的代码: $dbh = new PDO('mysql:host='.$this->server.';dbname='.$this->database.'', $this->user, $this->pass); $result = array
$dbh = new PDO('mysql:host='.$this->server.';dbname='.$this->database.'', $this->user, $this->pass);
$result = array();
foreach($dbh->query('SELECT * from bier') as $row) {
$result[] += $row;
}
print json_encode($result);
更新代码:
function getData()
{
try {
$dbh = new PDO('mysql:host='.$this->server.';dbname='.$this->database.'', $this->user, $this->pass);
$result = array();
foreach($dbh->query('SELECT * from bier') as $row) {
$result[] = $row;
}
$json = json_encode($result, JSON_PRETTY_PRINT);
var_dump($json);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
}
函数getData()
{
试一试{
$dbh=new-PDO('mysql:host='.$this->server.';dbname='.$this->database.',$this->user,$this->pass);
$result=array();
foreach($dbh->query('SELECT*from bier')作为$row){
$result[]=$row;
}
$json=json_encode($result,json_PRETTY_PRINT);
var_dump($json);
}捕获(PDO$e){
打印“错误!:”$e->getMessage()。“”; 模具(); } }
当前返回:布尔False在PHP中,
+=
复合运算符用于“添加和分配”;但是,这并不像您期望的那样将项插入数组
如果像@Rajdeep指出的那样从该行中删除+
,那么代码应该可以工作
以下是您的代码,为清晰起见,进行了一些更改:
try
{
$data = new PDO('mysql:host='.$this->server.';dbname='.$this->database.'', $this->user, $this->pass);
$data->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$list = [];
foreach($data->query('SELECT * from bier') as $item)
{ $list[] = $item; }
$json = json_encode($list, JSON_PRETTY_PRINT);
echo $json;
}
catch (PDOException $fail)
{
echo $fail->getMessage();
exit;
}
正如你可能注意到的;变量名(即数组)后的[]=
字符序列将新项插入正在分配的数组中
try-->catch
块应指示是否存在问题
以下是有关如何检查错误的更多信息:从此语句中删除
+
$result[]+=$row代码>@RajdeepPaul我试过了,但是如果我试着在错误报告中打印它,它不会显示任何内容。添加这些行错误报告(E_ALL);ini设置(“显示错误”,1)在PHP脚本的顶部输入code>,查看是否产生任何错误。@RajdeepPaul没有错误shown@RyanVincent当我刚刚把$result甩了的时候,它起作用了:)谢谢!非常感谢!但是,如果我尝试回显或打印它,似乎什么也不会显示:/请确保数据库连接设置正确,并确保数据库表bier
中有您的select
查询所建议的数据。我已经测试过了it@BananaCoder::我更新了答案并添加了一个链接,该链接解释了PDO连接,还显示了如何检测错误,因为这可能是导致结果为空的原因。@BananaCoder::我添加了强制抛出错误(如果有)的代码,因此,try/catch应该处理抛出的错误,并显示出错的地方。别忘了测试代码,这里最新的代码更新很可能会起作用——或者至少会告诉你哪里出了问题。