这种编码是错误的吗?它不能正常工作

时间:2013-01-30 10:33:43

标签: php mysql

以下脚本将数据输入到数据库,这会从表单中获取一些信息,然后将它们存储到数据库中。我也使用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约会而不是继续下一个。

3 个答案:

答案 0 :(得分:0)

您的更新查询缺少WHERE子句。试试这个:

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

还要注意MySQL注入:http://en.wikipedia.org/wiki/SQL_injection

答案 1 :(得分: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变量才能生效。

答案 2 :(得分:0)

要检查更新失败的原因,您应该在上一个mysql_error条款中致电else

} else {
    echo mysql_error();
}

至于第一个问题:如果你从未插入新记录(我不知道如何发生这种情况,提供你的代码),你将永远不会有一个ID为2的记录。