2013-10-31 40 views
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"; 
?> 
+0

'mysql_query'已弃用。使用'mysqli_query' ........ –

+0

或'PDO',但绝对不是'mysql' – Houssni

+0

'$ dateinsert'包含什么? –

回答

1

那是因为ü已经写了更新的语法wrong.u在指定的列名称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] 
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必须是一个字符串,也cointains列南。不仅价值...