在 PHP 中访问 JSON 数组并发送到 MySQL SELECT
Posted
技术标签:
【中文标题】在 PHP 中访问 JSON 数组并发送到 MySQL SELECT【英文标题】:Access JSON array in PHP and send to MySQL SELECT 【发布时间】:2015-09-26 20:57:28 【问题描述】:我正在尝试使用 php 从 JSON 接收数据并在我的 SELECT 查询中使用它。我到处搜索,但每个解决方案都不适合我。
我返回的 JSON 数据:
"processos:["processo":"203","processo":"1430"]"
我的 PHP:
$ar2 = json_decode($processo2, true);
$where2 = array();
foreach($ar2['processo'] as $key=>$val)
$where2[] = $val;
$where2 = implode(',', $where2);
$pegaSonda = $pdo->prepare("SELECT * FROM sonda WHERE n_processo IN ($where2)");
$pegaSonda->execute();
我的代码有什么问题?
编辑
@wadersgroup 中的代码工作正常,但是当我更改为我的变量时它停止了。这是我编码它的方式:
$jsonData = array();
$jsonData[] = array("processo" => $automovel->n_processo);
$data['processo2'] .= '"processos":'.json_encode($jsonData).'';
$data['processo2'] 正在发送到我的 AJAX 以填充输入,然后它接收回数据:
$processo2 = strip_tags(stripslashes($_POST['n_processo2']));
【问题讨论】:
正是如何这不适合你吗?返回错误数据?没有返回数据?抛出错误?发出侮辱?被狗踢了? @MarcB,在 $where2 我没有收到正确的数据,它应该调用第二个数据库表$ar2 = json_decode($processo2, true);
可能是$ar2 = json_decode($processos, true);
的拼写错误
@vinayakj,$processo2 是将数据发送到 PHP 的输入字段。
那么你的root变成ar2
而不是$processos
,所以试试$ar2.processos['processo']
【参考方案1】:
这段代码有很多错误。试试这个
$ar2 = json_decode('"processos":["processo":"203","processo":"1430"]', true);
$where2 = array();
foreach($ar2['processos'] as $key=>$val)
$where2[] = $val['processo'];
$where = implode(',', $where2);
print_r($where);
【讨论】:
您的代码工作起来很吸引人,但我的变量不起作用,也许是我的编码方式? 在字符串下没有任何字符编码后,JSON模式应该是紫色的 我已经用 json_encode 代码更新了我的问题,请您检查一下是否有问题? 试试 $jsonData = array(); $jsonData[] = array("processo" => json_encode($automovel->n_processo)); $data['processo2'] .= '"processos":'.$jsonData.''; 返回""processos":Array"
【参考方案2】:
您的 JSON 字符串看起来无效,请尝试:
'"processos":["processo":"203","processo":"1430"]'
【讨论】:
我试过了,现在它返回了""processos":["processo":"203","processo":"1430"]"
,但还是不行。
现在试试$ar2.processos['processo'] as $key=>$val
【参考方案3】:
$processo2 = '"processos": [ "processo": "203", "processo": "1430"]'
$ar2 = json_decode($processo2, true);
$arr = array_map(function($i) return $i['processo']; , $ar2["processos"]);
$where = implode(", ", $arr);
【讨论】:
以上是关于在 PHP 中访问 JSON 数组并发送到 MySQL SELECT的主要内容,如果未能解决你的问题,请参考以下文章
Flex Datagrid 选择多行并发送到 amfphp 后端
需要在 jQuery 中从 AJAX 将所有 JSON 推送到一个数组中
如何在 javascript 中访问多维 PHP 数组作为 json 编码的变体?