🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

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

PHP

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

Q&A

解決済

2回答

476閲覧

PHPによりSQL文を実行したい

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

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

PHP

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

0グッド

1クリップ

投稿2019/12/21 02:18

度々申し訳ありません。PHPによりデータベースに書き込む処理(insrt.php)が出来ていたのですが、度々接続環境?が変わったせいなのか、SQL文に問題があるのか、1週間で2度ほどデーターベースにログインできなくなる現象が続いています。config.inc.phpなどでは解決できないため、XAMPPで2度再インストールしその度にデータベースを作り直しています。それの影響なのか、問題のなかったphp側でもエラーをはくようになり、データベースを確認しましたが、テーブルからカラム名まで前回と変わりません。
出ているエラーは下記の通りです。
Fatal error: Uncaught Error: Call to a member function bindParam() on bool in C:\xampp\htdocs\insert.php:53 Stack trace: #0 {main} thrown in C:\xampp\htdocs\insert.php on line 53

53行目 $stmt -> bindParam(':workday',$row['workday'],PDO::PARAM_STR);

ちょうど、bindParamで各値を変数から代入しているシーンですが、var_dump($json);も取れていますし、$jsonから取り出し各変数($workday・・・・・)に代入した後もvar_dump($各変数);で見ても値が取れています。

どこが原因とみるのがよろしいのでしょうか?

insert.php

1<head> 2 <link rel="stylesheet" href="css/import.css" type="text/css"> 3 <link href="https://fonts.googleapis.com/css?family=M+PLUS+1p&display=swap" rel="stylesheet"> 4 <title>インポート完了</title> 5 <script type="text/javascript"> 6 </script> 7</head> 8<?php 9$data = array(); 10function add_person($workday, $workgroup, $personal, $product, $createcnt, $unit, $bestbydata, $remarks, $worktime, $breaktime){ 11$data []= array( 12'workday' => $workday, 13'workgroup' => $workgroup, 14'personal' => $personal, 15'product' => $product, 16'createcnt' => $createcnt, 17'unit' => $unit, 18'bestbydata' => $bestbydata, 19'remarks' => $remarks, 20'worktime' => $worktime, 21'breaktime' => $breaktime 22); 23} 24try{ 25$pdo = new PDO('mysql:host=localhost;dbname=workinfo;charset=utf8', 'root','root', 26array(PDO::ATTR_EMULATE_PREPARES => false)); 27} catch (PDOException $e) { 28 exit('データベース接続失敗。'.$e->getMessage()); 29} 30//locationの取得 31$location = $_REQUEST['location']; 32//JSON形式の$data配列を取り出す 33$json= $_REQUEST['json']; 34$json = json_decode($json,true); 35 36foreach ($json as $row) { 37 $workday = $row['workday']; 38 $workgroup = $row['workgroup']; 39 $personal = $row['personal']; 40 $product = $row['product']; 41 $createcnt = $row['createcnt']; 42 $unit = $row['unit']; 43 $bestbydata = $row['bestbydata']; 44 $remarks = $row['remarks']; 45 $worktime = $row['worktime']; 46 $breaktime = $row['breaktime']; 47} 48$workday =substr($row['workday'],0,10); 49$sql = "INSERT INTO $location (workday, workgroup, personal, product, createcnt, unit, bestbydata, remarks, worktime, breaktime)Values(:workday, :workgroup, :personal, :product, :createcnt, :unit, :bestbydata, :remarks, :worktime, :breaktime)"; 50foreach ($json as $row) { 51 $stmt = $pdo -> prepare($sql); 52 $stmt -> bindParam(':workday',$row['workday'],PDO::PARAM_STR); 53 $stmt -> bindParam(':workgroup',$row['workgroup'],PDO::PARAM_STR); 54 $stmt -> bindParam(':personal',$row['personal'],PDO::PARAM_STR); 55 $stmt -> bindParam(':product',$row['product'],PDO::PARAM_STR); 56 $stmt -> bindParam(':createcnt',$row['createcnt'],PDO::PARAM_STR); 57 $stmt -> bindParam(':unit',$row['unit'],PDO::PARAM_STR); 58 $stmt -> bindParam(':bestbydata',$row['bestbydata'],PDO::PARAM_STR); 59 $stmt -> bindParam(':remarks',$row['remarks'],PDO::PARAM_STR); 60 $stmt -> bindParam(':worktime',$row['worktime'],PDO::PARAM_STR); 61 $stmt -> bindParam(':breaktime',$row['breaktime'],PDO::PARAM_STR); 62 $stmt->execute(); 63} 64?> 65<h1>以下の内容で登録が完了しました。</h1> 66<h2><a href=index.php>TOPページ</a></h2> 67<table border ="1" class="table"> 68<tr> 69<th>グループ</th> 70<th>担当者</th> 71<th>製造製品</th> 72<th>生産量</th><!--単位も含める--> 73<th>賞味期限</th> 74<th>備考</th> 75<th>就業時間</th> 76<th>休憩時間</th> 77</tr> 78<?php foreach( $json as $row ) { ?> 79<tr> 80<td><?php echo( $row['workgroup'] ); ?></td> 81<td><?php echo( $row['personal'] ); ?></td> 82<td><?php echo( $row['product'] ); ?></td> 83<td><?php echo( $row['createcnt'].$row['unit'] ); ?></td> 84<td><?php echo( $row['bestbydata'] ); ?></td> 85<td><?php echo( $row['remarks'] ); ?></td> 86<td><?php echo( $row['worktime'] ); ?></td> 87<td><?php echo( $row['breaktime'] ); ?></td> 88</tr> 89<?php } ?> 90</table> 91</body> 92</html> 93

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

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

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

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

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

guest

回答2

0

ベストアンサー

マウントされただけだった

投稿2019/12/21 06:13

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

大変申し訳ありませんでした。datatableの列名がworkitmeになっておりました。自分の早とちりで
クリップしてくださった方、コードを添削してくださった方申し訳ありませんでした。質問を取り下げさせて頂きます。

投稿2019/12/21 02:46

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

m.ts10806

2019/12/21 04:42

teratailの使い方間違ってます。 「質問を取り下げる」は「自分で回答を付けてその旨を宣言する」ではありません。 それに何の反応もないのに「コードを添削」ってどういうことでしょうか。 ヘルプからガイドラインを一通り読んでおいてください。 あとPHPもSQLも基礎からやり直してください。 質問で片付けるにはあまりあるくらいの内容です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問