在 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 编码的变体?

GWT(客户端)=如何将对象转换为 JSON 并发送到服务器?

将一串数字拆分为数字并发送到数组

如何访问 PHP 中的 JSON 元素,如数组对象?