如何从执行的准备好的语句创建 JSON?
Posted
技术标签:
【中文标题】如何从执行的准备好的语句创建 JSON?【英文标题】:How to create JSON from executed prepared statement? 【发布时间】:2018-04-06 23:14:09 【问题描述】:我刚刚写了一些基本的 php 代码,如下所示:
$pdo = new PDO("mysql:host=localhost;dbname=locationtracker", "xxxx", "xxxx");
$statement = $pdo->prepare("SELECT * FROM waypoints");
$result = $statement->execute();
if ($result)
echo "Success";
$resultArray = array();
$tmpArray = array();
while($row = $statement->fetch())
print_r($row);
echo "<br>";
$tmpArray = $row;
array_push($resultArray, $tmpArray);
print_r(json_encode($resultArray));
else
die("Error.<br>");
sql 表 'waypoints' 如下所示:
waypoints
| x: double
| y: double
| name: varchar(255)
| city: varchar(255)
| id: Int
所以我想将数组转换为 JSON 格式。听起来很简单,但我的 PHP 代码是这样产生的:
Success
Array ( [x] => 7.0000 [0] => 7.0000 [y] => 32.0000 [1] => 32.0000 [name] => Georgia [2] => Georgia [city] => Georgia [3] => Georgia [id] => 1 [4] => 1 )
Array ( [x] => 5.0000 [0] => 5.0000 [y] => 34.000 [1] => 34.000 [name] => Home [2] => Home [city] => St.Martin [3] => St.Martin [id] => 1 [4] => 1 )
["x":"7.0000","0":"7.0000","y":"32.0000","1":"32.0000","name":"Georgia","2":"Georgia","city":"Georgia","3":"Georgia","id":"1","4":"1","x":"5.0000","0":"5.0000","y":"34.000","1":"34.000","name":"Home","2":"Home","city":"St.Martin","3":"St.Martin","id":"1","4":"1"]
这不是我想要的。现在所有变量都被复制了(第一次:名称,第二次:索引)。有没有办法只按名称获取变量,因为我不希望每个对象在我的数组和 JSON 对象中出现两次。
如果您还有其他问题,请告诉我。
【问题讨论】:
$statement->fetch(PDO::FETCH_ASSOC);
您好,很抱歉这种奇怪的沟通方式。我想知道您是否解决了superuser.com/questions/1412460/… 中的问题。我有完全相同的问题,找不到问题。我没有足够的代表问你超级用户,所以我在这里问。
哈哈,奇怪的是你遇到了完全相同的问题。不幸的是,那时我还没有,所以从那以后我就再也没有真正找到方法,也没有碰过它。您可能只是再次在 SU 上提出相同的问题(详细说明您的问题),并留下指向原始(我的)问题的链接作为参考。对不起:(@LeoSegol
【参考方案1】:
默认情况下,PDO fetch 返回一个以数字和关联方式索引的数组。您只需要关联索引。
while($row = $statement->fetch(PDO::FETCH_ASSOC))
//...
见https://secure.php.net/manual/en/pdostatement.fetch.php#refsect1-pdostatement.fetch-parameters
【讨论】:
以上是关于如何从执行的准备好的语句创建 JSON?的主要内容,如果未能解决你的问题,请参考以下文章