0

下面的脚本将数据输入到数据库中,这会从表单中获取一些信息,然后将它们存储到数据库中。而且我还使用 uplodify 上传图像文件并将文件名存储在数据库中,但我的问题是这个数据处理脚本不断更新行 ID 一个永远不会跳到第二行我尝试了每件事都可以有人帮助我这个或告诉我我做错了什么。

这也会检查 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 约会,而不是移动到下一个。

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 回答