0

以下のスクリプトはデータベースにデータを入力し、フォームから情報を取得してデータベースに保存します。また、uplodify を使用して画像ファイルをアップロードし、ファイル名をデータベースに保存していますが、私の問題は、このデータ処理スクリプトが行 ID を更新し続け、2 行目にジャンプしないことです。これか、私が間違っていることを教えてください。

また、これはIDをチェックし、1に等しくない場合は挿入を行い、等しい場合は更新しますが、これは発生しません。

ID は自動インクリメントです。

私のスクリプト

<?php

/**
 * @author SiNUX
 * @copyright 2013
 */

include ('connect.php');

$getId = mysql_query("SELECT ID FROM poiinfo ORDER BY ID DESC LIMIT 1");
$row = mysql_fetch_array($getId);

$poiName = $_REQUEST['Name'];
$poiDes = $_REQUEST['Descrip'];
$poiCon = $_REQUEST['ConInfo'];
//$poiId = $_REQUEST['pID'];

if($row['ID'] != "1"){
    $dbData = "INSERT INTO poiinfo(`Name`, `Des.`, `Contact`) VALUES ('$poiName','$poiDes','$poiCon')";        
    $putData = mysql_query($dbData);

    if ($putData){
        echo "Data inserted";
    }else {
        echo "Not Done";
    }

}else {
    $updLn = "UPDATE `poiinfo` SET `Name`='$poiName',`Des.`='$poiDes',`Contact`='$poiCon'";
    $updDone = mysql_query($updLn);

    if ($updDone){
        echo "Data inserted";
    }else {
        echo "Not Done";
    }
 }       
?>

私はあなたの提案を試みましたが、更新用のコードは次のようになっています。

$updLn = "UPDATE `poiinfo` SET `Name`='$poiName',`Des.`='$poiDes',`Contact`='$poiCon' WHERE `ID`='".$row['ID']."'";

しかし、それでも ID 1 とデートし続け、次の ID に移動しません。

4

3 に答える 3

0

更新クエリにWHERE句がありません。これを試して:

$updLn = "UPDATE `poiinfo` SET `Name`='$poiName',`Des.`='$poiDes',`Contact`='$poiCon' WHERE ID = '".$row['ID']."'";

MySQLインジェクションにも注意してください:http://en.wikipedia.org/wiki/SQL_injection

于 2013-01-30T10:37:08.280 に答える
0
    $updLn = "UPDATE `poiinfo` SET `Name`='$poiName',`Des.`='$poiDes',`Contact`='$poiCon'";

更新するレコードを指定するには、このSQLにwhere句が必要です。現在、すべてのレコードを更新しています。

    $updLn = "UPDATE `poiinfo` SET `Name`='$poiName',`Des.`='$poiDes',`Contact`='$poiCon' WHERE `ID` = ".$row['id']";";

これを機能させるには、$id変数を設定する必要があります。

于 2013-01-30T10:37:17.913 に答える
0

更新が失敗した理由を確認するmysql_errorには、最後のelse句を呼び出す必要があります。

} else {
    echo mysql_error();
}

最初の問題については、新しいレコードを挿入しない場合 (コードが提供された場合、それがどのように発生するかわかりません)、ID が 2 のレコードは作成されません。

于 2013-01-30T10:38:19.887 に答える