Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这个编码是不是错了;它工作不正常_Php_Mysql - Fatal编程技术网

Php 这个编码是不是错了;它工作不正常

Php 这个编码是不是错了;它工作不正常,php,mysql,Php,Mysql,下面的脚本将数据输入到数据库,这将从表单中获取一些信息,然后将它们存储到数据库中。我还使用uplodify上传一个图像文件,并将文件名存储在数据库中,但我的问题是,这个数据处理脚本不断更新行ID。一个从未跳转到第二行。我尝试了每一件事。有人能帮我吗?或者告诉我我做错了什么 此外,这将检查ID,如果它不等于1,则执行插入操作,如果它等于,则更新它,但不会发生这种情况 ID是自动递增的 我的脚本 <?php /** * @author SiNUX * @copyright 2013 *

下面的脚本将数据输入到数据库,这将从表单中获取一些信息,然后将它们存储到数据库中。我还使用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";
    }
 }       
?>

但它仍然会不断更新ID 1,而不会移动到下一个ID。

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

$updLn = "UPDATE `poiinfo` SET `Name`='$poiName',`Des.`='$poiDes',`Contact`='$poiCon' WHERE ID = '".$row['ID']."'";
还要注意MySQL注入:

您需要在此sql中使用where子句来指定要更新的记录。目前它正在更新所有记录

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

您需要设置一个$id变量才能使其工作。

要检查更新失败的原因,您应该在上一个
else
子句中调用
mysql\u error

} else {
    echo mysql_error();
}

至于第一个问题:如果您从未插入新记录(我不知道如何插入,只要您的代码),您将永远不会有ID为2的记录。

确切的问题是什么?主题说了什么?使用适当的主体问题我写的这段代码一直在更新同一数据行,我希望它移动到下一步。我尝试了这一步,但问题仍然存在,我做错了什么。同一问题我确实通过echo检查了错误,但没有出现错误,ID 1也在那里,它一直在更新,没有转到2
    $updLn = "UPDATE `poiinfo` SET `Name`='$poiName',`Des.`='$poiDes',`Contact`='$poiCon' WHERE `ID` = ".$row['id']";";
} else {
    echo mysql_error();
}