mysqlの結果を配列に変換しようとしています。下のコードは私のコードです。しかし、これは[]
を返します。mysqlの結果をPHPの配列に変換するには?
誰もが、私はjson
の出力は、あなたがarray_pushを使用する必要が配列
mysqlの結果を配列に変換しようとしています。下のコードは私のコードです。しかし、これは[]
を返します。mysqlの結果をPHPの配列に変換するには?
誰もが、私はjson
の出力は、あなたがarray_pushを使用する必要が配列
になりたいように、このしてください...
result.php
$prep =$mysqli->prepare("select name,location from token where sen_uid=?");
$prep->bind_param("s",$id);
$prep->execute();
$result= $prep->get_result();
$rows= array();
while($r= $result->fetch_array(MYSQL_ASSOC))
{
$rows[] = $r;
}
$obj= json_encode($rows);
を解決するために私を助けてメソッドを使用してオブジェクト(値)を配列にプッシュします。
$prep =$mysqli->prepare("select name,location from token where sen_uid=?");
$prep->bind_param("s",$id);
$prep->execute();
$result= $prep->get_result();
$rows= array();
while($r= $result->fetch_array(MYSQL_ASSOC))
{
array_push($rows,$r);
}
$obj= json_encode($rows);
まあ、のは、について話しましょう....
while($r= $result->fetch_array(MYSQL_ASSOC))
あなたがここでやっている、その後設定、連想配列として$r
を設定している$rows
内部の完全な配列;したがって、$result
が何かを返した場合、それは$rows
の内部で乗算されます。
あなたの後ろにいるのはこれのようなものでしょうか?
$prep =$mysqli->prepare("select name,location from token where sen_uid=?");
//should the bind_param function be i instead of s? i means integer and s means string
//$prep->bind_param("i",$id);
$prep->bind_param("s",$id);
$prep->execute();
$result= $prep->get_result();
$rows= array();
//for an array like [0][0], [0][1] use
//$rows= $result->fetch_array(MYSQLI_NUM);
//for an arary like [0]['name'], [0]['location'] use:
$rows= $result->fetch_array(MYSQLI_ASSOC);
$obj= json_encode($rows);
クエリの実行が正しいように見えます。おそらく準備が失敗していないことを確認するために何らかのエラーチェックを追加することになります。 MySQLでこのクエリを実行しようとしましたが、結果が得られるかどうかを確認しましたか?
編集;実際には、$r
が1度しか設定されないので、while
は完全に無意味です。私は、この問題は主に壊れた準備クエリの中にあると思う。デバッグ目的のために
if($prep =$mysqli->prepare("select name,location from token where sen_uid=?")){
//should the bind_param function be i instead of s? i means integer and s means string
//$prep->bind_param("i",$id);
$prep->bind_param("s",$id);
if(!$prep->execute()){
print_r("Execute error: ".$mysqli->error);
}
$result= $prep->get_result();
$rows= array();
//for an array like [0][0], [0][1] use
//$rows= $result->fetch_array(MYSQLI_NUM);
//for an arary like [0]['name'], [0]['location'] use:
$rows= $result->fetch_array(MYSQLI_ASSOC);
$obj= json_encode($rows);
}else{
print_r("Prepare error: ".$mysqli->error);
}
、上記のスニペットのよう
出力をテキストファイルに書き込もうとしましたが、これはnullを返します。 –
@NeethuMエラーチェックでコードを実行しようとしましたか? phpmyadmin/mysql cliで実行しようとしているクエリを実行して、結果が得られているかどうかを確認してください。 – IsThisJavascript
うんんのクエリは完全に動作していますが、 'json_encode'が' null'を返すようにしてください –
エラーチェックを追加し、私は、DB内のクエリに関連するすべてのデータがあると思いませんか?はい、その後
変更しようとした 場合は、この
$分取> bind_param( "S"、$のID);
へ
$分取> bind_param( "I"、$のID);
これは機能しています。私はIDを 'varchar'としました。私は' '' 'を使うのではなく、むしろ好きですか? –
問題がある場合は、サーバーのログを確認できます – Vigneshwaran
私はthis.Nowのように私のコードを編集しました。
result.php
$prep =$mysqli->prepare("select name,location from token where sen_uid=?");
$prep->bind_param("s",$id);
$prep->execute();
$result= $prep->get_result();
$payload= array();
while($r= $result->fetch_array(MYSQL_ASSOC))
{
$payload[]=array('name' =>$r['name'],
'lc' =>$r['location'],
);
}
$obj= json_encode($payload);
これは何も解決しません。 'array_push'は' $ row [] = $ var'と同じように動作するので、実際に何も変更していません。 – IsThisJavascript
あなたは何を言おうとしていますか?変数$ rowsは[]を返します。 downvoteの理由を教えてください。 – Vigneshwaran
私はすでに私のdownvoteの理由を述べました。 '$ row [] = $ var' ==' array_push($ row、$ var); ' – IsThisJavascript