大家好,这是我在stack overflow.com上的第一篇文章 我正在尝试创建购物车。值存储在二维表中的会话中。第一个值表示数据库中的项目ID,第二个 - 表示项目数量。
foreach($cart_array as $row){
$sql = "SELECT * FROM prod_table WHERE id=".$row['0']."";
$cart_result = mysql_query($sql, $conn);
while ($array = mysql_fetch_array($cart_result)) {
echo "<tr><td>". $array[manufacturer] . "</td>";
echo "<td>". $array[model]."</td>";
echo "<td>".$row['1']."</td>";
$cart_value = $array[price]*$row['1'];
//sum and store value of all products
$total_cart_value += $cart_value;
echo "<td>£" .$cart_value. "</td>";
echo "<td><a href='search.php?kick_id=".$row['0']."'>Remove</a></td></tr>";
好的,要删除项目表单购物车用户点击删除然后他被发送回同一页面(由于某种原因,我很难使用$ _SERVER ['PHP_SELF'}与GET方法...) 然后使用unset函数触发代码的不同部分,这将从$ cart_array中删除一对值。
if(isset($_GET['kick_id'])) {
$t = count($cart_array);
for( $u = 0; $u < $t; $u++){
if ($cart_array[$u]['0'] == $_GET['kick_id']){
unset($cart_array[$u]['0']);
unset($cart_array[$u]['1']);
echo " Item has been removed from your cart";
$cart_array = array_values($cart_array);
它实际上删除了一对值,但现在不是顺利运行而是显示错误消息: 警告:mysql_fetch_array():提供的参数不是有效的MySQL结果资源... 我假设会话数组中必须存在一些删除值的“跟踪”,这会导致错误。 如何修复代码? 是否还有其他方法/方法来删除值?
答案 0 :(得分:1)
您似乎没有unset($cart_array[$u])
,只包含它包含的两个键。不要忘记取消设置$cart_array[$u]['0']
和'1'
,只需取消设置$cart_array[$u]
。
答案 1 :(得分:0)
有两种方法可以解决这个问题:
1)在你的第一部分:
foreach($cart_array as $row){
if(empty($row[0])
continue;
$sql = "SELECT * FROM prod_table WHERE id=".$row['0']."";
[...]
2)当你删除项目时,而不是取消设置($ cart_array [$ u] ['0']);你为什么不取消($ cart_array [$ u]); ?
答案 2 :(得分:0)
可能这个
while ($array = mysql_fetch_array($cart_result)) {
造成了这个问题。基于您看到的错误。在尝试获取结果之前,检查
是否有任何结果可用if(mysql_num_rows($cart_result)>0){
while ($array = mysql_fetch_array($cart_result)) {
//rest code here
}
答案 3 :(得分:0)
我认为......
这就是你做错了。
程序员不应该“假设”。程序员可以(并且应该)确定
假设将导致您误入歧途并浪费您的时间(以及其他人提问时的时间)。
因此,您必须执行一些调试 - 调查以查找问题的实际原因。
supplied argument is not a valid MySQL result resource
错误表示查询中存在错误。所以,你必须看看它是什么错误。因此,以允许您查看发生的任何错误的方式运行所有yoiur查询。最简单的方法是
$cart_result = mysql_query($sql, $conn) or trigger_error(mysql_error()." in ".$sql);
再次运行您的代码 你会在他们通常的位置找到一个sql错误 - 一个屏幕或一个日志文件。
如果您无法理解错误的含义并自行更正代码 - 是时候提出问题了。一些直接的问题,而不是某些假设中的模糊问题。疑难杂症?