• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPでmysqlへの書き込みでエラー)

PHPでmysqlへの書き込みでエラー

kosukejlampnetの回答

回答No.1

VALUES("'.$syain.'","'.$syohinmei.'",'.$kingaku.',"'.$timestamp.'")'; ↓ VALUES("':syain.'","':syohinmei.'",':kingaku.',"':timestamp.'")';

nakacchi0614
質問者

お礼

ありがとうございます。 コマンドの書き方の勉強になりました。

関連するQ&A

  • PHP(prepareについて)

    html(fromタグ)→php(fromの受取)→db(データベース)→php(出力) ということをやりたいのです。htmlからの送信はできているのですが、 エラーがphp文の中にあるexecute();メゾッド部分に起こります。どうすれば直りますか? PHP <?php try{ $dbh=new PDO("mysql:dbname=blog;host=localhost","root",""); $sth=$dbh->prepare("select * from id where id=:id"); $sth=$sth->bindValue(":id",2,PDO::PARAM_STR); $sth=$sth->execute(); $result=$sth->fetchALL(); print_r($result); }catch(Exception $e){echo $e->getMessage();} ?>

    • ベストアンサー
    • PHP
  • コードの終端にエラー???php

    いつもお世話になり誠にありがとうございます。 標記の件。 エラーメッセージは次です。 ( ! ) Parse error: syntax error, unexpected end of file in /srv/www/htdocs/blog.php on line 98 コードは97行になります。 どうか教えてください。 アドバイスを宜しくお願い申し上げます。      記 <?php require_once('dbc.php'); class Blog extends Dbc { protected $table_name = 'blog'; //カテゴリー名を表示 //引数:数字 //返り値:カテゴリーの文字列 public function setCategoryName($category) { if ($category == '1') { return '日常'; } elseif ($category == '2') { return '非日常'; } else { return 'その他'; } } public function blogCreate($blogs) { $sql = "INSERT INTO blog(title,content,category,publish_status) VALUES (:title, :content, :category, :publish_status)"; $dbh = $this->dbConnect(); $dbh->biginTransaction(); try { $stmt = $dbh->prepare($sql); $stmt->bindValue(':title', $blogs['title'], PDO::PARAM_STR); $stmt->bindValue(':content', $blogs['content'], PDO::PARAM_STR); $stmt->bindValue(':category', $blogs['category'], PDO::PARAM_INT); $stmt->bindValue(':publish_status', $blogs['publish_status'], PDO::PARAM_INT); $stmt->bindValue(':id', $blogs['id'], PDO::PARAM_INT); $stmt->execute(); $stmt->commit(); echo 'ブログを投稿しました!'; } catch (PDOException $e) { $dbh->rollBack(); exit($e); } function blogUpdate($blogs) { $sql = "UPDATE $this->table_name SET title = :title, content = :content, category = :category, publish_status = :publish_status Where id = :id"; $dbh = dbConnect(); $dbh->biginTransaction(); try { $stmt = $dbh->prepare($sql); $stmt->bindValue(':title', $blogs['title'], PDO::PARAM_STR); $stmt->bindValue(':content', $blogs['content'], PDO::PARAM_STR); $stmt->bindValue(':category', $blogs['category'], PDO::PARAM_INT); $stmt->bindValue(':publish_status', $blogs['publish_status'], PDO::PARAM_INT); $stmt->bindValue(':id', $blogs['id'], PDO::PARAM_INT); $stmt->execute(); $stmt->commit(); echo 'ブログを更新しました!'; } catch (PDOException $e) { $dbh->rollBack(); exit($e); } } function blogUpdate($blogs){ } //ブログのバリデーション function blogValidate($blogs) { if (empty($blogs['title'])) { exit('タイトルを入力してください。'); } if (mb_strlen($blogs['title']) > 191) { exit('タイトルは191文字以下にしてください。'); } if (empty($blogs['content'])) { exit('本文を入力してください。'); } if (empty($blogs['category'])) { exit('カテゴリーは必須です。'); } if (empty($blogs['publish_status'])) { exit('公開ステータスは必須です。'); } } ?>

    • ベストアンサー
    • PHP
  • PHPからSQL文で〇〇か〇〇か〇〇という時に

    PHPからMYSQLに問い合わせでご質問です。 実行している文です(SELECT文から) SELECT * FROM users WHERE id = ? AND level = ?' ))); $stmt->bindValue(1, $id, PDO::PARAM_INT); $stmt->bindValue(2, $level, PDO::PARAM_INT); $stmt->execute(); return $stmt->fetchAll(); } このような感じでユーザーIDとユーザーのレベルを判別しているものですが、IDはセッションを入れレベルに2と3と4の人を抽出という場合がわからずご質問させて頂きました。 ORを使って WHERE id = ? AND level = ? OR id = ? AND level = ? OR id = ? AND level = ? OR id = ? AND level = ? $stmt->bindValue(1, $id, PDO::PARAM_INT); $stmt->bindValue(2, $level, PDO::PARAM_INT); $stmt->bindValue(3, $id, PDO::PARAM_INT); $stmt->bindValue(4, $level, PDO::PARAM_INT); $stmt->bindValue(5, $id, PDO::PARAM_INT); $stmt->bindValue(6, $level, PDO::PARAM_INT); のような感じで当てはめたいものを書くのかと思ったり、もっときれいな書き方というか正しい書き方がありそうな気がしてご質問させて頂いた限りです。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • mySQLでINSERT Errorとなります。

    初心者です。よろしくお願いいたします。 データを入れたいのですが、エラーとなってしまいます。 以下でデータベースとテーブルを作成し、 <?php $db_name="tori"; $tbl_name = "hato"; $db = mysql_connect('localhost', 'root', ''); if (!$db) { die('接続できません: ' . mysql_error()); } $sql = 'CREATE DATABASE tori'; if (mysql_query($sql, $db)) { echo "データベースtori の作成に成功しました\n"; } else { echo 'データベースtoriの作成に失敗しました: ' . mysql_error() . "\n";} mysql_select_db($db_name,$db) or die("データベースへの接続エラー"); $query ="create table {$tbl_name} ( id char(8) primary key, date TEXT, sex TEXT, age TEXT )TYPE=MyISAM"; mysql_query($query); $query ="INSERT INTO `houzingpark`.`hatogaya` ( id , date , sex , iro ) VALUES ( '2', 'uu', 'ii', 'po' )"; mysql_close($db); ?> 以下で入れ込みたいのですが、出来ないのです。 <?php $db_name="tori"; $tbl_name = "hato"; $db = mysql_connect('localhost', 'root', ''); if (!$db) { die('接続できません: ' . mysql_error()); } mysql_select_db($db_name,$db) or die("データベースへの接続エラー"); $sql="INSERT INTO hatogaya ( id , date , sex , iro ) VALUES ( 3, 2005-12-3, mesu, cya )"; mysql_query($sql); if(!$result){print 'INSERT Error!';} echo $sql; mysql_close($db); ?> でINSERTしようとするのですが、INSERT Error!と表示されてしまいます。 Adminで見るとデータベースとテーブルは出来ているのですが、どうしてもINSERTできないのです。 もう何時間も悪戦苦闘しております。 どなたかご指導よろしくお願いいたします。

  • PDOでMYSQL

    WHERE区の値をbindValueしているのですが、結果が取得できません。 ちなみにエラーになるわけでも文字化けを起こすわけでもありません。 $name = '太郎'; $sql = 'SELECT * FROM table WHERE name = :name; $sth = $dbh->prepare($sql); $sth->bindValue(':name', $name, PDO::PARAM_STR); $sth->execute(); $result = $sth->fetchAll(); print_r($result); いろいろ試してたところ、日本語だと結果を取得しないようで SQLデータの「太郎」となっていた箇所を「tarou」に変更し 変数の部分だけ変更したところ結果を取得できました。 $name = 'tarou; 基本の構文は合っていると思うのですが単純に日本語の指定が できないのでしょうか? PHPとMYSQLは全てUTF-8でバージョンは下記の通りです。 PHP:5.3.8 MYSQL:Client API version mysqlnd 5.0.8-dev - 20102224 - $Revision: 310735 $ PDO: PDO drivers mysql, odbc, sqlite, sqlite2 Client API version mysqlnd 5.0.8-dev - 20102224 - $Revision: 310735 $

    • ベストアンサー
    • PHP
  • MySQLでのエラー

    MySQLのコマンド画面で、データベースを作成しています。 そこで、WEB上を参考にして打ち込んでみたところ ERROR 1064: You have an error in your SQL syntax. Check the manual that corresp onds to your MySQL server version for the right syntax to use near ')' at line 1 とでます。 僕が打ち込んだ文は以下のとおりです。 mysql> create database odinms; です。 間違いなどがあればご指摘お願いします。

  • PHP PDO execute のsql

    $sql = "select count(*) as ..........."; $PDOStatement = $pdo->prepare($sql); $PDOStatement ->bindValue(':id', $dat, PDO::PARAM_INT); $PDOStatement -> execute(); のような場合に、実際に問い合わせが行われたSQLはどうやって取得できますか?

    • ベストアンサー
    • PHP
  • Windows、Apache、PHP、MySQLを使ったwebアプリケーションのエラー

    widows環境でMySQLで作ったデータベースをApache+PHPでwebページで見れるようにしたいと思い、 http://www.yamada-lab.org/doc/win/mysql5/4/0401.html#a2 このページの通りに進めていました (データベースの内容は少し変更しました) しかし、いざページを開いてみると 「Parse error: syntax error, unexpected T_STRING in C:\test\connect01.php on line 8」 とでてきて、うまく表示されません。 syntax errorなので、文法ミスだとは思いますが、どこが違うかがわからないので、どなたか教えてください。 使用しているPCは   OS:Windows XP professional MySQL:5.1.38 PHP:5.2.10 apache:2.2.13 です。 --以下、connect01.phpの中身の途中まで-- <html> <head> <title>connect.php</title> </head> <body> <?php  //データベースサーバ名の設定  $db_host  = "localhost";  //ユーザ名の設定  $db_user  = "webapl";  //パスワードの設定  $db_passwd = "pass1234";  //データベースサーバへの接続  $db = mysql_connect($db_host,$db_user,$db_passwd); ---- エラーが出ているのは、「 $db_host  = "localhost";」の行ですが、 サーバー名、ユーザー名、パスワードに関する3項目を消し、 データベースサーバへの接続を $db = mysql_connect(localhost,webapl,pass1234); と書きかえても、この行でエラーが出ていました。

    • ベストアンサー
    • PHP
  • PHP disconnect()でエラー

    WAMP初級者です。 いままでPEAR::DBを使って書いていたサイトがあり、PDOを利用するように書き換えています。 画面が真っ白になる現象に陥り、他の投稿によりご指導いただき、画面にエラーが表示されるようになったものの、エラーの対処方法がわからず、どなたかご指導いただければと思います。 コードを一つずつコメントアウトして画面が真っ白になるポイントをさぐったところ、問題の箇所がみつかりました。(ここをコメントアウトすると画面がちゃんと表示され、コメントアウトしないとエラーのみの白い画面がでてしまいます。) ●問題の記述 $connection->disconnect(); ●表示されるエラー Fatal error: Call to undefined method PDO::disconnect() in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\test\test2.php on line 406 そもそもこの記述は必要ないのでしょうか? このページ自体は、あるDBからユーザーが検索をした結果が表示されるページになっていて、 まず、以下のように接続をしています。 // 接続 $connection = new PDO('mysql:host=127.0.0.1;dbname=test_db;charset=utf8','root','root', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, ) ); そのあと、クエリをくみたて、prepareして、値をbindValueしてexecuteして、テーブルを表示させるようにしています。 不特定多数のユーザーが検索をするので、事が終えたらdisconnectしないとダメなんじゃないかな、と思ってつけてみたんですが。。特に不要なのでしょうか。 初歩的な質問ですみませんが、どなたお助けいただけますと幸いです。 環境はApache/2.2.4 (Win32) PHP/5.4.22です 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHP pdo データが無い場合とある場合

    tablename( id int not null, name text not null, age int ); 的なテーブルがあったとして、id番号と名前は必ずデータがあるが、年齢はデータがあったり無かったりするとします。 $id = 1; $name = "太郎"; $age = ""; だったり $age = "25";だったり シンプルにinsert 書きたいのですが、やはり$ageが空文字の場合と数字で構成される文字の場合でわけないと書けないでしょうか? $sql = "insert into tablename( id,name,age) values (:id,:name,:age); $stmt = $pdo->prepare($sql); $stmt->bindValue(":id", $id, PDO::PARAM_INT); $stmt->bindValue(":name", null, PDO::PARAM_STR); if ($age === "") { $stmt->bindValue(":age ", null, PDO::PARAM_NULL); } else { $stmt->bindValue(":age ", $age , PDO::PARAM_INT); } とわけないと無理?

    • 締切済み
    • PHP