Php 中的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' 需要帮忙吗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'
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
。