使用变量更新表

时间:2013-10-31 13:11:48

标签: php

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

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

2 个答案:

答案 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注入!)

PDO Manual

编辑:正如之前发布的那样,$ ureninsertarr需要是一个字符串,它也会使列nam。不仅是价值......