テーブルがあり、PHPウェブインタフェースを使用して行を削除したい。これを行うには、私は2つのPHPファイルを持っており、どこかで間違いがあっているはずです。私は、playernameが文字で書かれているという事実と関係があると思います。なぜなら、これを取った例は、整数として削除されるはずの値を持っていたからです。ここで PHP上のSQLテーブルにDELETEを使用
は(あなたはおそらく、テーブルを呼び出す部分を無視することができます!)二つのファイルです:1)pdelete.php
<?php
$query = 'SELECT p.name, p.club, f.link, ROUND(2016-p.birthyear, 0) AS "age", p.position
FROM pplayers p, pflags f
WHERE p.country = f.country
ORDER BY name';
$result = pg_query($query) or die('Query failed: ' . pg_last_error());
?>
<form action="premove.php" method="POST">
<table border="1">
<tr> <th>Name</th>
<th>Team</th>
<th>Nationalität</th>
<th>Alter</th>
<th>Position</th>
<th><i>Select</i></th>
</tr>
<?php while ($x = pg_fetch_object($result)) {
echo "<tr>" .
"<td> $x->name </td>" .
"<td> $x->club </td>" .
"<td> $x->link </td>" .
"<td> $x->age </td>" .
"<td> $x->position </td>" .
"<td> <input type=\"radio\" name=\"name\" value=\"" . $x->name . "\"/> </td><tr>\n" ;
}
?>
<tr>
<td colspan=6> <center><input type="submit" value="Delete selected"> </center></td>
</tr>
</table>
2)premove.php
<body>
<?php
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
pg_query("DELETE FROM pplayers WHERE name = " . test_input($_POST[name])) or die('Delete failed.');
echo "Spieler " . $_POST[name] . "aus der Datenbank entfernt!";
?>
</body>
エラーメッセージが表示されます(この例では、削除したいプレーヤーを「ThomasMüller」と呼びます):
Warning: pg_query(): Query failed: ERROR: syntax error at or near "Müller" LINE 1: DELETE FROM pplayers WHERE name = Thomas Müller^in /srv/pc8/home/h1354320/SR/www/premove.php on line 13 Delete failed.
申し訳ありませんが、フォーマットが正しくありません。私はそれが読みやすいと思う。 ありがとうございます!クエリを閉じる必要があり
pg_query("DELETE FROM pplayers WHERE name = " . test_input($_POST[name])) or die('Delete failed.');
:これは意味をなさないよう
クエリの名前を引用符で囲む必要があります。 –
これを正しく行うにはどうすればよいですか?クエリで引用符を追加しようとするたびに、別のエラーメッセージが表示されます。 – hacker1337ninja