我被困住了,我认为我已经很接近了,但这个想法不会出现!我已经搜索了很多,但我找不到任何适合我具体情况的解决方案的人。
我正在用mysql用php制作购物车。这是一个简单的,你登录,然后去商店,点击"添加到购物车"按钮,商品出现在带有价格的网格视图中,在其下方,你会看到购买总额。当我需要将当前会话中的多行数据(saleid、用户名、itemid 等)保存到数据库时,我遇到了问题,我只是不知道为什么我无法弄清楚,因为它(有点)与用户在页面中注册时的方法相同。
我正在考虑制作一个 for 循环,将每个 SESSION 行的内容保存到数据库中,就像这些一样(这只是一个例子,我很担心这可能是不正确的)
if (mysql_num_rows($result)!=0){
while ($_SESSION = mysql_fetch_array($result)){
$array[]= $_SESSION;
for($i=,$i<$array_rows;$i++){
mysql_query ("INSERT INTO purchase(username,gameid,amount_purchased) VALUES
('".$array[$i]."', '".$array[$i]."', '".$array[$i].")");
$array[$i]=$i+1;
}
}
}
用户名,游戏ID,购买金额只是一些例子!我真的很抱歉这是一个愚蠢的问题,但我发现.php真的很难理解:/
如果您将购物车的值存储在会话变量中,假设 $_SESSION['cart'] 将数据从会话购物车保存到数据库中,您通常会执行以下操作
$data = $_SESSION['cart'];
if(empty($data)) return false;
$table = 'purchase';
$implode_values = array();
$implode_fields = array();
foreach($data as $key => $value) {
$implode_fields[] = (string)$key;
$implode_values[] = Your_db_escape_method($value);
}
if( mysql_query ("INSERT INTO " . $table . " (".implode(", ", $implode_fields).") VALUES (".implode(", ",$implode_values).")")) {
//echo 'Data was inserted';
} else {
//echo 'Data was not inserted';
}
或根据您的示例作为单个查询
foreach($data as $value) {
mysql_query (
"INSERT INTO
purchase(
username,
gameid,
amount_purchased
) VALUES (
'".$value['username']."',
'".$value['gameid']."',
'".$value['amount_purchased']."')"
);
}
从对象中设置值并像这样存储它们;
$_SESSION['cart'] = array (
'username' => 'Usertest_1', // eg 'username' => $obj->username,
'gameid' => 1234,
'amount_purchased' => 200
);
以上与
;$_SESSION['cart']['username'] = 'Usertest_1';
$_SESSION['cart']['gameid'] = 1234;
$_SESSION['cart']['amount_purchased'] = 200;
对于多个记录;
$_SESSION['cart'][] = array (
'username' => 'Username1',
'gameid' => 1234,
'amount_purchased' => 200
);
$_SESSION['cart'][] = array (
'username' => 'username2',
'gameid' => 1234,
'amount_purchased' => 200
);
保存示例
$data = $_SESSION['cart'];
$result = mysql_query ("INSERT INTO purchase(username, gameid, amount_purchased) VALUES ('".$data['username']."','".$data['gameid']."','".$data['amount_purchased']."')");
if($result && mysql_num_rows($result)>0) {
// all ok
}
如果您希望在请求之间保留$_SESSION
的值,则不应像那样丢弃它的值。
while ($_SESSION = something) { ...
看看你在这里用$_SESSION
做什么?
$_SESSION
就像任何其他变量一样工作,如果覆盖它,则会删除其原始值。
另外,for($i=,$i<$array_rows;$i++)
?
这甚至可以编译吗?试试这个: for($i=0;$i<$array_rows;$i++)