我想使用数组更新表,但我无法使其工作。它在表中插入日期,但更新查询不起作用。
<?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";
?>
答案 0 :(得分:1)
那是因为你写的更新语法有错误。我必须在'set'.fix中指定列名这个问题和你的更新查询都可以。
$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]
答案 1 :(得分: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中使用的params。直接从$ _GET获取它们意味着您并不真正知道插入数据库的内容。 (!SQL注入!)
编辑:正如之前发布的那样,$ ureninsertarr需要是一个字符串,它也会使列nam。不仅是价值......