前提・実現したいこと
PHPでmysqlにしデータベースから消去するようなプログラムを作っています。
入力フォームに以下の情報を入力しすべてが合致すればデータベースから消去するようにしたいです。
入力する情報[管理ナンバー(重複なし),掲載ID(数字6桁),パスワード(英数8桁)]
発生している問題・エラーメッセージ
Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM user WHERE kanrino = '3'' at line 1 in リンクみたいなやつ(投稿なので置き換えさせていただきます):65 Stack trace: #0 リンクみたいなやつ(65): PDOStatement->execute() #1 {main} thrown in リンクみたいなやつ on line 65
該当のソースコード
php
1質問時から更新しました。 2<?php 3 try { 4 //DB名、ユーザー名、パスワード(投稿なので文字に置き換えさせていただきます) 5 $dsn = 'mysql:dbname=データベース名;host=ホスト名'; 6 $user = 'ユーザー名'; 7 $password = 'パスワード'; 8 9 $PDO = new PDO($dsn, $user, $password); //MySQLのデータベースに接続 10 $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //PDOのエラーレポートを表示 11 12 13 if($deta['kanrino']=@$_POST['kanrinobeta']and$deta['id']=@$_POST['id']and$deta['pass']=@$_POST['pass']){ 14 //2.実行したいSQL文をセットする。 15 $shokyo2 = $PDO->prepare('DELETE * FROM user WHERE kanrino = :kanribeta' ); 16 //3.SQLに対してパラメーターをセットする。【任意】 17 $shokyo2->bindValue(':kanribeta', @$_POST['kanrinobeta'], PDO::PARAM_STR); 18 //4.実際にSQLを実行する。 19 $shokyo2->execute(); 20 21 }else{ 22var_dump("入力した内容に誤りがあります。もう一度やり直してください。"); 23 } 24 25 26?> 27 28
該当のソースコード
html
1<form action="shokyo.php" method="post" enctype="multipart/form-data"> 2<p>管理ナンバーを入力してください(半角数字)</p> 3<div><input pattern="^[0-9]+$"name="kanrinobeta" pattern="^[0-9]+$" placeholder="管理ナンバー" required></div> 4<p>掲載IDを入力してください</p> 5<div><input name="id" pattern="^[0-9]+$" placeholder="掲載ID" required></div> 6<p>パスワードを入力して下さい</p> 7<div><input name="pass" pattern="^['0-9'ヘディングのテキスト'a-z''A-Z']+$" placeholder="パスワード" required></div> 8<p>※消去は取り消せません。</p> 9<div><button type="submit">消去する</button></div>
試したこと
$detaが正常に動いているかのチェック
カラム名の入力ミスがないかの確認
分からない部分が多くあまり試せていません。
###ミスをしていたポイント
誤
if($deta['kanrino']=@$_POST['kanrinobeta']and$deta['id']=@$_POST['id']and$deta['pass']=@$_POST['pass'])
正
if($deta['kanrino']==@$_POST['kanrinobeta']and$deta['id']==@$_POST['id']and$deta['pass']==@$_POST['pass'])
誤
$shokyo2 = $PDO->prepare('DELETE * FROM user WHERE kanrino = :kanribeta' );
正
$shokyo2 = $PDO->prepare('DELETE FROM user WHERE kanrino = :kanribeta' );
補足情報(FW/ツールのバージョンなど)
動作環境はXFREEサーバーのphp,mysqlサーバーを使用しています。
回答1件
あなたの回答
tips
プレビュー