我有一个值列表,我试图进入一个动态行数的mysql数据库。变量存储在$ box1,$ box2中,依此类推。我试图使用UPDATE在表的每个连续行中输入正确的值(选择的第一行中的$ box1,选择的第二行中的$ box2,依此类推)。我不确定在“while”循环中输入什么代码才能实现这一点。
<?php
// Retrieve data from Query String
$box1 = $_GET['box1'];
$box2 = $_GET['box2'];
$box3 = $_GET['box3'];
$box4 = $_GET['box4'];
$box5 = $_GET['box5'];
$session = session_id();
//build query
$query = "SELECT * FROM sessionid WHERE sessionid='$session' ";
//Execute query
$qry_result = mysql_query($query) or die(mysql_error());
// Insert the right quantity in each row for each consecutive box
$i=1;
while($row = mysql_fetch_array($qry_result)){
mysql_query("UPDATE `sessionid` SET `qt`='$box' .$i . '' WHERE `sessionid`='$session' ");
$i++;
}
?>
我现在将上一页网址中的数据输入到数组$ box [1]中。我一直收到错误说:解析错误:语法错误,意外''',期待第13行/home/content/c/a/s/cashme/html/buylooper/change-qt.php中的T_STRING或T_VARIABLE或T_NUM_STRING 。第13行是指UPDATE查询的行。有没有提示?
//Retrieve data from Query String, input into array, and update table
$count = $_SESSION['id'];
for ($i=1; $i<$count; $i++){
$box[$i] = $_GET['box'. $i .''];
mysql_query("UPDATE `sessionid` SET `qt`='$box["'. $i .'"]' WHERE `sessionid`='$session' AND `id`='$i' ");
echo $box[$i];
}
答案 0 :(得分:2)
你必须从心里学到最基本的东西:
所有行都是完全随机的 而且你不能以任何方式依赖他们的自然秩序。
要更新某一行,您必须使用某个唯一字段来识别它。 Mysql的标准自动递增id是最佳选择。
始终将行的id存储在表单中,以便能够知道当前行的值属于哪一行 像这样制作你的表格
<input type="text" name"box[1]" value="20">
其中1
是实际行的ID
另请注意,所有数据操作都必须使用POST方法执行,而不是GET。
因此,在$_POST['box']
中,您将拥有一对id => value
数组,并且可以轻松地构建更新查询。
答案 1 :(得分:1)
为什么不在数组中将变量$box1
存储到$ box5`而不是5个变量?
然后您可以使用$boxes[$i]
来调用相关值。
答案 2 :(得分:0)
你需要
"UPDATE `sessionid` SET `qt`="'.$box.$i . '" WHERE `sessionid`="'.$session.'"
此外,您应该将值存储在Array中,而不是将$box
个变量
$box[]
不是
$box1,$box2, etc...