Php 中的SQL语法错误

Php 中的SQL语法错误,php,mysql,sql,Php,Mysql,Sql,我正在编写一个脚本,以确定是否对我的数据进行了更改 但是我得到了这个错误: 错误:更新在='07:59'中设置的工时,其中AFNumber='AF1585'和 Date='09/07/2015'您的SQL语法有错误;检查 与右边的MySQL服务器版本相对应的手册 使用near'IN='07:59'的语法,其中AFNumber='AF1585'和 日期='09/07/2015''第1行错误:更新规定的工作时间='14:04' 其中,AFNumber='AF1585'和日期='09/07/2015'

我正在编写一个脚本,以确定是否对我的数据进行了更改

但是我得到了这个错误:

错误:更新在='07:59'中设置的工时,其中AFNumber='AF1585'和 Date='09/07/2015'您的SQL语法有错误;检查 与右边的MySQL服务器版本相对应的手册 使用near'IN='07:59'的语法,其中AFNumber='AF1585'和 日期='09/07/2015''第1行错误:更新规定的工作时间='14:04' 其中,AFNumber='AF1585'和日期='09/07/2015'

需要帮忙吗

if (isset($_POST['submit'])) 
    {
        $sql = "SHOW COLUMNS FROM Workhours";
        $result = mysqli_query($con,$sql);
         while($row = mysqli_fetch_array($result)){
                    $tempname = $row['Field'];
                    $sql2 = "UPDATE Workhours SET ".$row['Field']."= '$_POST[$tempname]' WHERE AFNumber='".$_GET["af"]."' AND Date='".$_GET["date"]."'";
                    $result2 = mysqli_query($con,$sql2);
                    if ($con->query($sql2) === TRUE) {
                    } else {
                        echo "Error: " . $sql2 . "<br>" . $con->error;
                    }
        }
         $sql3 = "SELECT * FROM Workhours WHERE AFNumber='".$_GET["af"]."' AND (".$row['Field']." NOT LIKE '".$_POST[$tempname]."')";
                    $result3 = mysqli_query($con,$sql3);
                    if (mysqli_num_rows($result3) > 0) {
                    // output data of each row
                    while($row3 = mysqli_fetch_array($result3)) {
                        $sql3 = "INSERT INTO `Changes` (`Table`, `AFNumber`, `Attribute`, `DateChanged`, `HRUser`, `OldValue`, `NewValue`)

    VALUES ('Workhours', '".$_GET["af"]."', '".$row["Field"]."', '".date('dd/m/Y HH:mm:ss')."', '$login_session', '', '$_POST[$tempname]')";

                        if (mysqli_query($con,$sql3) === TRUE) {
                        } else {
                        echo "Error: " . $sql3 . "<br>" . mysqli_error($con);
                        }
                    }
                    }

         echo '<script>swal("Success", "Changes have been saved", "success");</script>';

    }    
if(isset($\u POST['submit']))
{
$sql=“显示工作时间中的列”;
$result=mysqli\u查询($con,$sql);
while($row=mysqli\u fetch\u数组($result)){
$tempname=$row['Field'];
$sql2=“更新工作时间集”。$row['Field']。”='$\u POST[$tempname]'其中AFNumber='“$\u GET[“af”]”和Date='$\u GET[“Date”]。“”;
$result2=mysqli_查询($con,$sql2);
if($con->query($sql2)==TRUE){
}否则{
echo“Error:”.$sql2.“
”$con->Error; } } $sql3=“从AFNumber='”、“$\u GET[“af”]”和(“.$row[“Field”]”不象“.$\u POST[$tempname]”)的工作时间中选择*”; $result3=mysqli\u查询($con,$sql3); 如果(mysqli_num_行($result3)>0){ //每行的输出数据 while($row3=mysqli\u fetch\u数组($result3)){ $sql3=“插入到`Changes`(`Table`、`AFNumber`、`Attribute`、`DateChanged`、`HRUser`、`OldValue`、`NewValue`) 值('Workhours','“$\u GET[“af”]。”,“$row[“Field”]。”,“.date('dd/m/Y HH:mm:ss'),“,$login\u session',”,“$\u POST[$tempname]”); if(mysqli_查询($con,$sql3)==TRUE){ }否则{ echo“Error:.$sql3.”
“.mysqli_Error($con); } } } echo'swal(“成功”,“更改已保存”,“成功”); }
IN
OUT
在MySQL中。您必须使用反勾号转义
$row['Field']

$sql2 = "UPDATE Workhours SET `".$row['Field']."`= '$_POST[$tempname]' WHERE AFNumber='".$_GET["af"]."' AND Date='".$_GET["date"]."'";

您还应该使用准备好的语句来防止SQL注入。

IN
OUT
都在MySQL中。您必须使用反勾号转义
$row['Field']

$sql2 = "UPDATE Workhours SET `".$row['Field']."`= '$_POST[$tempname]' WHERE AFNumber='".$_GET["af"]."' AND Date='".$_GET["date"]."'";

您还应该使用预先准备好的语句来防止SQL注入。

在中是否有名为
的列?您的
$row['Field']
中使用
,这是一个MySQL保留字;这就是我对它的理解。与
OUT
相同。
和(“.$row['Field']”中的括号“NOT LIKE”“。$\u POST[$tempname]”)中的括号用于子查询;你不需要它们。这里有许多语法错误。
$tempname=$row['Field']
$\u POST[$tempname]
?没有意义。您是否在
中有名为
的列?您的
$row['Field']
中使用了
,这是一个MySQL保留字;这就是我对它的理解。与
OUT
相同。
和(“.$row['Field']”中的括号“NOT LIKE”“。$\u POST[$tempname]”)中的括号用于子查询;你不需要它们。这里有许多语法错误。
$tempname=$row['Field']
$\u POST[$tempname]
?没有意义。对于
OUT
也一样。OP在错误中显示更新工作时间设置='14:04'
。然而,我认为你们现在所拥有的应该涵盖这两个方面。我做了一个编辑,希望你不介意。@Jens谢谢你,我会在4分钟内接受,时间限制。。只有一件事,我得到了警告:mysqli_num_rows()期望参数1是mysqli_result,在第24行的C:\xampp\htdocs\hrapp\login\app\empworkhours.php中给出的布尔值:if(mysqli_num_rows($result3)>0){@dan看起来您在查询中存储在
sql3
和(“.row['Field]”中也有错误
还需要在
$sql3
@dan
$row['Field'中转义
在您的
之后没有任何意义,而
循环为
$row
将是
false
。对于
OUT
也一样。OP在错误中显示
更新工作时间设置='14:04'
。但是,我认为您现在拥有的应该涵盖这两个方面。我做了编辑,希望您不介意。@Jens谢谢您,我将在4 mi后接受它。@nutes,time limit.。有一件事,我得到了警告:mysqli_num_rows()期望参数1是mysqli_result,在第24行的C:\xampp\htdocs\hrapp\login\app\empworkhours.php中给出的布尔值:if(mysqli_num_rows($result3)>0){@dan看起来您在查询中也有错误,存储在
sql3
和(“.$row['Field]”中
也需要在
$sql3
@dan
$row['Field']
中转义,而
循环作为
$row
将是
false