我想使用数组更新表,但无法使其工作。它会在表中插入日期,但更新查询不起作用。
<?php
session_start();
$dateinsert = $_SESSION['aanwezigheidsdatum'];
$nameninsertarr = $_SESSION['namen'];
for ($i =2 ; $i<$_SESSION['totaalpersoneel'];$i++){
$test = $_GET["ureninsert".$i];
if ($test == ""){$test = X;}
$ureninsertarray[$i-2] = $nameninsertarr[$i-2]." = '".$test."'";
}
$ureninsertarr = implode(' , ',$ureninsertarray);
echo $ureninsertarr;
include("connectdb.php");
$query = "INSERT INTO Aanwezigheidslijst (dag) VALUES ('$dateinsert')";
mysql_query($query);
$query = "UPDATE 'Aanwezigheidslijst' SET $ureninsertarr WHERE dag = '$dateinsert'";
echo "<br>".$query;
$putquery = mysql_query($query);
if (!$putquery) echo "error";
?>
那是因为您编写了错误的更新语法。u 必须在"set"中指定列名。修复此问题,您的更新查询将起作用。
$query = "UPDATE Aanwezigheidslijst
SET column_name=$ureninsertarr
WHERE dag = $dateinsert";
更新语法:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
$query = "UPDATE 'Aanwezigheidslijst' SET $ureninsertarr WHERE dag = '$dateinsert'";
应该在
$query = "UPDATE `Aanwezigheidslijst` SET $ureninsertarr WHERE dag = '$dateinsert'";
但应该使用另一种方式与您的数据库通信。(PDO?
在PDO中,它看起来像
$stmt = $dbh->prepare("UPDATE `Aanwezigheidslijst` SET $ureninsertarr WHERE `dag` = ?");
$dbh->execute(array($dateinsert));
您还应该注意$ureninsertarr中使用的参数。直接从 _GET 美元获取它们意味着您并不真正知道插入数据库的是什么。(!SQL注入!
PDO手册
编辑:如前所述,$ureninsertarr需要是一个字符串,也与列 nam 相吻合。不仅是价值观...