質問編集履歴
2
コード修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -276,4 +276,38 @@
|
|
276
276
|
```
|
277
277
|
結果://間違い探しの内容(値)が表示されず、「パスワードまたは削除番号が間違っています」のみ表示された
|
278
278
|
|
279
|
+
【追記】回答をうけて削除部分を以下のように書きなおしました
|
280
|
+
```php
|
281
|
+
//----------------【DELETEで指定した番号のメッセージを削除】--------------------
|
282
|
+
|
283
|
+
$deleteNo=$_POST['deleteNo'];
|
284
|
+
$delete_pass=$_POST['pass'];
|
285
|
+
|
286
|
+
//SELECTで削除番号とパスワードが一致するデータを取得
|
287
|
+
$sql="SELECT * FROM $tb_name WHERE number=:number,password=:password";
|
288
|
+
$stmt=$pdo->prepare($sql);
|
289
|
+
$stmt->bindValue(':number',$deleteNo,PDO::PARAM_INT);
|
290
|
+
$stmt->bindValue(':password',$delete_pass,PDO::PARAM_STR);
|
291
|
+
|
292
|
+
$delete=$stmt->execute();
|
293
|
+
|
294
|
+
if($delete){
|
295
|
+
$sql="DELETE FROM $tb_name WHERE $deleteNo";
|
296
|
+
$stmt->$pdo->prepare($sql);
|
297
|
+
$stmt->execute();
|
298
|
+
echo "メッセージを削除しました";
|
299
|
+
}else{
|
300
|
+
echo "パスワードまたは削除番号が間違っています";
|
301
|
+
}
|
302
|
+
|
303
|
+
```
|
304
|
+
セレクトでパスワードと削除番号と一致するデータを取得しその結果をif文に渡し、trueの場合削除を行うという意図でコードを書きました。実行した結果以下のようなエラーが出てしまいました。
|
305
|
+
```
|
306
|
+
Notice: Undefined index: deleteNo in /home/co-19-208.99sv-coco.com/public_html/kadai_2.php/kadai_2_advanced/kadai_2_advanced.php on line 173
|
307
|
+
|
308
|
+
Notice: Undefined index: pass in /home/co-19-208.99sv-coco.com/public_html/kadai_2.php/kadai_2_advanced/kadai_2_advanced.php on line 174
|
309
|
+
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'password=?' at line 1
|
310
|
+
```
|
311
|
+
しかし、該当箇所を見てみてもおかしい部分は見つかりません。
|
312
|
+
|
279
313
|
他になにかデバッグ方法や解決策あれば教えていただきたいです!
|
1
デバッグ方法追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -238,7 +238,7 @@
|
|
238
238
|
エラーが出ているわけではありませんが、削除ボタンをおして、パスワードと削除したいメッセージの投稿番号(削除番号)を入力しても、あっているはずなのに「パスワードまたは削除番号が間違っています」と表示されてしまいます
|
239
239
|
|
240
240
|
【デバッグ】
|
241
|
-
本当にパスワードと削除番号が一致しているか確かめるために以下のコードで確かめました
|
241
|
+
①本当にパスワードと削除番号が一致しているか確かめるために以下のコードで確かめました
|
242
242
|
```php
|
243
243
|
//間違い探し
|
244
244
|
/*---------------------------------------------------------------
|
@@ -252,4 +252,28 @@
|
|
252
252
|
```
|
253
253
|
結果:一致していました。
|
254
254
|
|
255
|
+
➁そもそもif文の中が機能しているのか以下のコードで確かめた
|
256
|
+
```php
|
257
|
+
foreach($stmt as $loop){
|
258
|
+
if(($deleteNo==$loop['number'])&&($delete_pass==$loop['password'])){
|
259
|
+
//間違い探し
|
260
|
+
echo $deleteNo."<br>";
|
261
|
+
echo $loop['number']."<br>";
|
262
|
+
echo $delete_pass."<br>";
|
263
|
+
echo $loop['password']."<br>";
|
264
|
+
|
265
|
+
//DELETEの処理
|
266
|
+
$sql="DELETE FROM $tb_name WHERE number=:number";
|
267
|
+
$stmt=$pdo->prepare($sql);
|
268
|
+
$stmt->bindValue(':number',$deleteNo,PDO::PARAM_INT);
|
269
|
+
$stmt->execute();
|
270
|
+
echo "メッセージを削除しました";
|
271
|
+
}else{
|
272
|
+
echo "パスワードまたは削除番号が間違っています";
|
273
|
+
exit();
|
274
|
+
}
|
275
|
+
}
|
276
|
+
```
|
277
|
+
結果://間違い探しの内容(値)が表示されず、「パスワードまたは削除番号が間違っています」のみ表示された
|
278
|
+
|
255
279
|
他になにかデバッグ方法や解決策あれば教えていただきたいです!
|