質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

220閲覧

phpでデータベースの中のカラムの値を配列にし、javascriptで受け取りたい

usagilove

総合スコア9

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2024/02/19 12:40

編集2024/02/20 00:54

実現したいこと

遷移元(formで送られてきた値)から送られてきた値をデータベースに保存し、nameというカラムの値全てをjavascriptの配列に入れたいです。
例としては、レコードが三つあり、上から順番に太郎、花子、山田とnameカラムに入っていた場合、
js_name_arr=[”太郎”,”花子”,”山田”];という形でavascriptの配列にしたいです。
しかしまず、[”太郎”,”花子”,”山田”]というような、nameカラムのみの配列をphpで作ることができず、下記のような不要な数字や連想配列の形式の配列しか取得できません。
Array ( [0] => wsx [1] => wsx [2] => wsx [3] => wsx [4] => wsx [5] => wsx [6] => wsx [7] => wsx [8] => wsxェ [9] => wsxェ [10] => wsxェ [11] => wsxェ [12] => wsxェ [13] => wsxェ [14] => wsxェ [15] => wsxェ [16] => wsxェ [17] => wsxェ [18] => wsxェ [19] => wsxェ [20] => wsxェ [21] => wsxェ [22] => wsxェ [23] => wsxェ [24] => wsxェ [25] => wsxェ [26] => wsxェ [27] => wsxェ [28] => wsxェ [29] => wsxェ [30] => wsxェ [31] => wsxェ [32] => wsxェ [33] => wsxェ [34] => wsxェ )
更に、その連想配列をとりあえずjavascriptで受け取ろうとしましたがjsonの受け渡しに失敗しているのかエラーになってしまいます。どなたか助けてください。困っています。

発生している問題・エラーメッセージ

Uncaught SyntaxError: Unexpected token 'var'

該当のソースコード

test.php

1<?php 2 3$dsn = 'mysql:dbname=●●●;host=localhost;charset=utf8'; 4$user = 'root'; 5$password='your_password'; 6 7$PDO = new PDO($dsn, $user, $password); 8try{ 9 10 11 $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 12 13 //index.phpの値を取得 14 $name = $_POST['name']; 15 $score = $_POST['true_score']; 16 17 $sql = "INSERT INTO list (name, score) VALUES (:name, :score)"; 18 19 $stmt = $PDO->prepare($sql); 20 $params = array(':name' => $name, ':score' => $score); 21 $stmt->execute($params); 22 23 //データベース取得 24 $sql2 = 'select name from list'; 25 $rec = $PDO->prepare($sql2); 26 $rec->execute(); 27 $rec_list = $rec->fetchAll(PDO::FETCH_ASSOC); 28// print_r($rec_list); 29 30}catch (PDOException $e) { 31 exit('データベースに接続できませんでした。' . $e->getMessage()); 32} 33 34 35?> 36 37 38 39 40<!DOCTYPE html> 41<html lang="en"> 42<head> 43 <meta charset="UTF-8"> 44 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 45 46 <title>Document</title> 47</head> 48<body> 49 50<!-- nameカラムのみを入れる空の配列用意 --> 51<?php $name_arr = [];?> 52 <!-- データベース表示 --> 53<?php foreach ($rec_list as $index => $rec) { ?> 54 <?php array_push($name_arr,$rec['name']);?> 55 <!-- <?php print_r($name_arr);?> --> 56 57<?php } ?> 58<?php 59print_r($name_arr); 60$json_array = json_encode($name_arr,JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE); 61?> 62<script> 63 64 var js_array = <?php echo $json_array; ?> 65 var js_json = JSON.parse( js_array ); 66 console.log(js_array); 67</script> 68 69 </script> 70</body> 71</html>

補足情報(FW/ツールのバージョンなど)

vscode,xamppで開発しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

https://masanyon.com/php-javascript-data-post/このサイトを参考に、
下記のようにすると、phpの連想配列をjavascriptでオブジェクトで受け取れることが分かったので、このオブジェクトを配列に変換して受け取ろうと思います。

php

1<?php 2$test=[1,2,3]; 3 4$json_array = json_encode($test); 5 6?> 7<script> 8 const robotama = JSON.parse('<?php echo $json_array; ?>'); 9console.log({robotama}); 10</script>

投稿2024/02/20 00:42

usagilove

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問