0

過去 1 時間、ユーザーが MySQL DB に同様の行を既に所有しているかどうかをサーバーが認識する方法を見つけようとしました。

あなたの誰かが私を助けることができますか...

これが今までに行われたコードです

$nummer = $_GET['a'];
$klasse = strtoupper ( $_GET['b'] );

$kid = $nummer . '.' . $klasse;

$result = $db->query("SELECT kid FROM Kcode WHERE sid='".$_SESSION['id']."'");
$resa = $result->fetch();

$b = strtoupper ( $resa['kid'] );
$a = $kid
$c = $_SESSION['id'];



if ($a !== $b){
echo "insert";
} else {
echo "already exists";
}

さまざまな get コマンドが何であるかをより深く説明します。

  • $_GET['a']=前のページから取り出した手紙
  • $_GET['b']=前のページから取得した数値

選択したい「子供」はKcodeテーブルの行です。問題は、比較したい子供がいくつかあること$aです...しかし、この方法を試してみると、最後に作成されたものしか取得されません。

お時間ありがとうございます

$kid編集: コメントで述べたように、 kid という mysql 行と比較したいWHEN sid=$_SESSION['id']

4

1 に答える 1

0

fetch複数の行を取得する場合は、ループに入れる必要があります。

$exists = false;

while($resa = $result->fetch()) {

    $b = strtoupper ( $resa['kid'] );
    $a = $kid
    $c = $_SESSION['id'];

    if ($a !== $b){
        //echo "insert";
    } else {
        $exists = true;
        //echo "already exists";
    }
}


if($exists){
{
    echo "already exists";
} else {
    echo "insert";
}

これはあなたがやろうとしていたことですか?

ここで、行が存在するかどうかを確認するだけの場合は、クエリを変更する必要があります。

$result = $db->query("SELECT kid FROM Kcode WHERE sid='".$_SESSION['id']."' 
                      AND kid='$kid'");

パラメータから取得$kidしてGETいるため、SQL インジェクションを防ぐために、最初にそれをクリーンアップする必要があります。

于 2013-04-25T17:01:17.487 に答える