0

データベースにIDが存在するかどうかを確認して削除できるようにする必要があり、そうでない場合は警告メッセージを表示します。「x」と「xtrue」を比較するときの問題。

$x = $_REQUEST['X'];
$y = $_REQUEST['Y'];
if($x != "") {
    $xtrue = " SELECT x
                FROM ".$y."
                WHERE x=".$x;

    if($x == $xtrue) {
        $query="DELETE FROM ".$y." WHERE id=".$x;

        $recordset = mysql_query($query,$conn);

        echo "-> ".$x." from ".$y." deleted.";
        }
    else{echo "There is no ".$x." from ".$y.".";}
}
4

2 に答える 2

1

実際には使用しないでくださいmysql_*(PHP5.5.0 以降では非推奨になっています)。

レコードが存在するかどうかを確認する必要はありません。削除してみてmysql_affected_rows、レコードが削除されたかどうかを判断するために使用してください。

$x = $_REQUEST['x'];
$y = $_REQUEST['y'];

// Basic validation
// $x must be integer and $y may contains only letters and underscore
if (preg_match('/^[0-9]+$/', $x) and preg_match('/^[_a-z]+$/', $y)) {

    // If record is not exists it will not be removed
    mysql_query("DELETE FROM $y WHERE id = $x");

    if (mysql_affected_rows() == 1) {
        echo 'Record was deleted';
    } else {
        echo 'Record not exists.';
    }
}
于 2013-10-06T09:08:03.757 に答える
-1
$x = $_REQUEST['X'];
$y = $_REQUEST['Y'];
/*Validation*/
if($x!="" && preg_match('/^[0-9]+$/', $x) && preg_match('/^[_a-z]+$/', $y)){
 $sql = $dbh->prepare("SELECT x FROM ? WHERE x=?");
 $sql->execute(array($y,$x));
 if($sql->rowCount() > 0) {
  $query=$dbh->prepare("DELETE FROM ? WHERE id=?");
  $query->execute(array($y,$x));
  echo "-> ".$x." from ".$y." deleted.";
 }else{
  echo "There is no ".$x." from ".$y.".";
}

PDO の詳細 : php.net/manual/en/book.pdo.php

于 2013-10-06T07:38:37.773 に答える