【问题标题】:PHP array from Ajax : SQL request format来自 Ajax 的 PHP 数组:SQL 请求格式
【发布时间】:2018-03-11 10:48:51
【问题描述】:

我对我的 PHP 文件有点迷茫。 我想在数据库中找到一个包含我所有数据的数组,并用 ajax 将其发送到我的 js 文件(这部分可以)。

现在,我有:

$cnx = new PDO('mysql:host=localhost;dbname=simul','root','');
$cnx->query('SET NAMES utf8');
$cnx->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

$req = $cnx->prepare('Select * from price');
$req-> execute();

$data = $req->fetchAll(PDO::FETCH_KEY_PAIR);
print_r($data); 

我的 JS:

function set_global_var(){
    $.ajax({ 
        type: "POST",
        url: '/global.php',
        async: false,
        success: function(rep){console.log(rep);},
    }); 
}

打印_r:

Array
(
[0] => Array
    (
        [small-bronze] => 5
    )

[1] => Array
    (
        [small-silver] => 10
    )
)

为了快速访问它,我只想要类似的东西:

[small-bronze] => 5
[small-silver] => 10
[small-gold] => 15

数据库:

item            price
small-bronze    5

我怎样才能有效地做到这一点? PDO::FETCH_KEY_PAIR 错了吗? 提前谢谢你!

【问题讨论】:

  • 看起来很奇怪。我敢打赌你自己的后期处理。你能提供一个实际工作的真实代码sn-p,而不是人工制作的草图吗?顺便说一句,表中有多少个字段?
  • 感谢您的回答。同意,第一次见。现在已编辑,信息够了吗?
  • 好吧,我能建议的只是创建一个MCVE that everyone could run and confirm your case
  • 鉴于提供的输出,您很可能正在运行另一个版本的代码,其中实际使用 PDO::FETCH_ASSOC 而不是 PDO::FETCH_KEY_PAIR
  • 是的......就是这样......本地有一个旧版本......我觉得有点愚蠢,但是谢谢,现在它可以工作了!

标签: php mysql arrays ajax pdo


【解决方案1】:

global.php

$cnx = new PDO('mysql:host=localhost;dbname=simul','root','');
$cnx->query('SET NAMES utf8');
$cnx->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

$req = $cnx->prepare('Select * from price');
$req-> execute();

$data = $req->fetchAll(PDO::FETCH_KEY_PAIR);
echo json_encode($data);

我的 JS

function set_global_var(){
    $.ajax({ 
        type: "POST",
        url: '/global.php',
        async: false, // this is not required (in this case)
        dataType:'json',
        success: function(rep){
           console.log(rep);

           //You can access each items of JSON array as below.
           $.each(resp, function(i, val) {
              console.log(val.small-bronze);
           }

        },
    }); 
 }

以下链接将有助于您了解有关此内容的更多信息。 http://api.jquery.com/jquery.ajax/ http://php.net/manual/en/function.json-encode.php

【讨论】:

  • 完美,更简洁的 json 数据类型 + PHP json 编码,谢谢提示
【解决方案2】:

我换了:

$req->fetchAll(PDO::FETCH_KEY_PAIR);

与:

$array = array();
while($row = $req->fetch()) {
    $array[$row['item']] = $row['prix'];
}

现在我有:

[small-bronze] => 5
[small-silver] => 10
[small-gold] => 15

完成这项工作,有点失望 FETCH_KEY_PAIR 在我的情况下不起作用..

【讨论】:

  • 不不,这是一个错误,也是我的错。只是我用一段时间替换了 FETCH_KEY_PAIR,它做得更好。这个周末我编写了我的代码,我认为发布我的实际代码可以帮助某人,所以我发布了它。很抱歉尝试以正确的方式做事..
猜你喜欢
  • 2016-06-28
  • 1970-01-01
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-16
  • 1970-01-01
相关资源
最近更新 更多