json_encodeを使用してphpからjavascriptへのmySQL PDOクエリの結果である配列を渡そうとしています。mySQLクエリから返された文字列でjson_encodeを使用するとエラーが発生する
しかし、フィールドの1つにスペースが含まれている場合、または文字列にデータベース関数を使用しようとすると(最初の非スペース部分のみを選択するため)、オブジェクトは存在しないように見えます。コンパイル。続き
が実行されるコードです:
<?php
$sql = "SELECT id, substring_index(firstNames, ' ', 1) as firstName, lastName, gender, idPersonFather, idPersonMother
FROM a_person";
$result = $db->query($sql);
while ($row = $result->fetch(PDO::FETCH_ASSOC)){
$personArray[$row['id']] = Array( 'firstName' => $row['firstName']
, 'lastName' => $row['lastName']
, 'gender' => $row['gender']
, 'idFather' => $row['idPersonFather']
, 'idMother' => $row['idPersonMother']);
}
?>
<html>
...
<script type="text/javascript" src="js/includes/grid_classes.js">
var personArray=<?php echo json_encode($personArray); ?>//get php aray
var someNextStuff
...etc
ラインvar someNextStuff
が明らかにオブジェクトが空の文字列に変換され、予期しない来るので、これはエラー Uncaught SyntaxError: Unexpected token var
になりますか? 'マリア・アンナセシリア' のような値、およびNULLを含むfirstNamesと
$sql = "SELECT id, firstNames, lastName, gender, idPersonFather, idPersonMother
FROM a_person";
:
はまた、次のselectは同じ問題が発生します。
ただし、SQLクエリはデータベース(phpmyadmin)で直接動作します。
ただし、選択と配列からfirstNames
フィールドを除外すると、コードが正しく動作しています。
この原因は何ですか?あなたの助けのための
感謝..
編集:
は、私が今
SELECT id, substring_index(coalesce('Maria anna blah','?'), ' ', 1) as firstName, <rest of fields>
は動作しますが、
SELECT id, substring_index(coalesce(firstNames,'?'), ' ', 1) as firstName, <rest of fields>
がないことがわかりました。
だから、その場で何かしなければなら、私は..
PHPとJavaScriptを、 '<?php'と'?> 'タグで適切に区切らずにミックスしているようですが、その構文エラーの原因となっています... –
申し訳ありません、例 - 今追加されました。上記のように、スペースを含むフィールドを除外している限り、コードはコンパイルされ、正しく動作します。 – Rusty75
ああ、まあまあ、ちょうど '<?php echo json_encode($ personArray);の後ろにセミコロンが必要なようです。 ?> 'をJavaScriptで使用します。 –