0

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

<?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";
?>
4

2 回答 2

1

那是因为你写了错误的更新语法。你必须在'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]
于 2013-10-31T13:19:48.793 回答
0
$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 的字符串。不仅价值观...

于 2013-10-31T13:31:01.377 回答