使用变量更新表


Update table using variables

我想使用数组更新表,但无法使其工作。它会在表中插入日期,但更新查询不起作用。

<?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 相吻合。不仅是价值观...