2017-09-29 20 views
0

PHPファイルが少し失われています。 データベース内のすべてのデータを含む配列を検索し、それをajaxとともにjsファイルに送信したい(この部分は問題ありません)。今AjaxのPHP配列:SQLリクエスト形式

、私が持っている:

$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);}, 
    }); 
} 

ますprint_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は間違っていますか? ありがとうございます!

+0

が奇妙に見えます。私はあなた自身の後処理に賭けるでしょう。人工的に作られたスケッチの代わりに実際に動作する現実のコードスニペットを提供できますか?ところで、テーブルのフィールド数は?あなたの答えは –

+0

ありがとう。私は同意する、初めてこれを見て。今編集された、十分な情報? –

+0

私が示唆できるのは、誰もがあなたのケースを実行して確認できるMCVE(https://phpdelusions.net/pdo/mcve)を作成することだけです。 –

答えて

0

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); 

MY 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

+0

パーソン、jsonデータ型+ PHP jsonエンコードできれいに、先端のthx –

-1

私が交換:

$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がないことに失望私の場合で働く..

+0

何ですか? [**これはあなた自身のコメントです**](https://stackoverflow.com/questions/46490377/php-array-from-ajax-sql-request-format#comment79937606_46490377)、 "うん...それはそれ..地元の古いバージョンがあった...私はちょっと愚かだと思うが、ありがとう、今それは働く! - それはあなた自身のせいだと認めて、今度はPDOの責めを負っています。 –

+0

いいえ、それは間違いであり、私のせいでした。ちょうどFETCH_KEY_PAIRをしばらく置き換えました。これは仕事をより良くします。今週末私のコードを編集しました。実際のコードを投稿すると助けになると思っていたので、投稿します。物事を正しい方法でやり遂げようと申し訳ありません.. –