2013-02-16 3 views
-4

Я обещаю, это будет последний вопрос сегодня. Но я получил ошибку «Warning: mysql_fetch_assoc(): поставляется аргумент не является допустимым MySQL результаты ресурс в /home/a1014025/public_html/practice/cart/cart.php на линии 58» с этим кодом:Предупреждение: mysql_fetch_assoc(): предоставленный аргумент не является допустимым ресурсом результата MySQL в PHP?

<?php 
include('connect.php'); 
session_start(); 
?> 
<html> 
<head> 
    <title>Cart</title> 
    <link rel='stylesheet' href='css/main.css' /> 
</head> 
<body> 
    <?php 
    $page = 'index.php'; 

    if(isset($_GET['add'])){ 
     $add_id = $_GET['add']; 
     $quantity = mysql_query("SELECT id, quantity FROM products WHERE id='$add_id'"); 
     while($quantity_row = mysql_fetch_assoc($quantity)){ 
      if($quantity_row['quantity'] [email protected]$_SESSION['cart_'.$add_id]){ 
       @$_SESSION['cart_'.$_GET['add']]+='1'; 
       header('Location: index.php'); 
      } 
      else{ 
       header('Location: index.php?err=max'); 
      } 
     } 

    } 

    if(isset($_GET['remove'])){ 
     $_SESSION['cart_'.(int)$_GET['remove']]--; 
     header("Location: index.php"); 
    } 

    if(isset($_GET['delete'])){ 
     $_SESSION['cart_'.(int)$_GET['delete']]='0'; 
     header('Location: index.php'); 
    } 

    function products(){ 
     $get = mysql_query("SELECT id, name, description, price FROM products WHERE quantity > 0 ORDER BY id DESC"); 
     if(mysql_num_rows($get) == 0){ 
      echo "There are no products to display."; 
     } 
     else{ 
      while($get_row = mysql_fetch_assoc($get)){ 
       echo '<p>'.$get_row['name'].'<br />'.$get_row['description'].'<br />$'.$get_row['price'].' <a href="cart.php?add='.$get_row['id'].'">Add</a></p>'; 
      } 
     } 
    } 

    function paypal_items(){ 
     $num = 0; 
     foreach($_SESSION as $name => $value){ 
      if($value!=0){ 
       if(substr($name, 0, 5) == 'cart_'){ 
        $id = substr($name, 5, strlen($name)-5); 
        $get = mysql_query("SELECT id, name, price, shipping, shipping2 FROM products WHERE id=".$id); 
        while($get_row = mysql_fetch_assoc($get)){ 
         $num++; 
         echo '<input type="hidden" name="item_number_'.$num.'" value="'.$id.'">'; 
         echo '<input type="hidden" name="item_name_'.$num.'" value="'.$get_row['name'].'">'; 
         echo '<input type="hidden" name="amount_'.$num.'" value="'.$get_row['price'].'">'; 
         echo '<input type="hidden" name="shipping_'.$num.'" value="'.$get_row['shipping'].'">'; 
         echo '<input type="hidden" name="shipping2_'.$num.'" value="'.$get_row['shipping2'].'">'; 
         echo '<input type="hidden" name="quantity_'.$num.'" value="'.$value.'">'; 

        } 
       } 
      } 
     } 
    } 

    function cart(){ 
     $total = 0; 
     foreach($_SESSION as $name => $value){ 
      if($value>0){ 
       if(substr($name, 0, 5)=='cart_'){ 
        $id = substr($name, 5, strlen($name)-5); 
        $get = mysql_query("SELECT id, name, price FROM products WHERE id='$id'"); 
        while($get_row = mysql_fetch_assoc($get)){ 
         $sub = $get_row['price']*$value; 
         echo $get_row['name'].' x '.$value.' @ $'.number_format($get_row['price'], 2).' = $'.$sub.' <a href="cart.php?add='.$id.'">[+]</a> <a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?delete='.$id.'">[Delete]</a><br />'; 
        } 
       } 
       $total += $sub; 
      } 
     } 
     if($total==0){ 
      echo "You cart is empty."; 
     } 
     else{ 
      echo "<p>Checkout with PayPal for your $".$total." total.</p>"; 
      ?> 
      <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> 
      <input type="hidden" name="cmd" value="_cart"> 
      <input type="hidden" name="upload" value="1"> 
      <input type="hidden" name="business" value="[email protected]"> 
      <?php paypal_items(); ?> 
      <input type="hidden" name="currency_code" value="USD"> 
      <input type="hidden" name="amount" value="<?php echo $total; ?>"> 
      <input type="image" src="http://www.paypal.com/en_US/i/btn/x-click-but03.gif" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"> 
      </form> 
      <?php 

     } 
    } 

    ?> 
</body> 

+0

Считаете ли вы, что ищете свою проблему в Google? http://i.imgur.com/2YxuPMi.png –

+0

Да, но я ничего не нашел, поэтому пришел сюда. – WorldxFree

+0

Повторите поиск https://www.google.com/search?q=Warning%3A+mysql_fetch_assoc()%3A+supplied+argument+is+not+a+valid+MySQL+result+resource –

ответ

-1

Похоже, у вас есть ошибка в вашем SQL на линии 57 - ваше значение идентификатора должно быть в кавычках:

$get = mysql_query("SELECT id, name, price, shipping, shipping2 FROM products WHERE id='".$id."'"); 

вы могли бы иметь PHP отчет это автоматически с помощью or:

$get = mysql_query(...) or die(mysql_error()); 

Кстати, вы действительно должны дезинформировать свои запросы перед их отправкой. Каждый раз, когда вы передаете переменную в оператор SQL, используйте mysql_real_escape_string для предотвращения SQL-инъекции.

+1

'mysql_real_escape_string' будет ** не ** предотвращать SQL-инъекцию. OP необходимо использовать параметризованные операторы. Кроме того, 'id' делает ** не ** должен быть в кавычках или экранирован. – Kermit

0

Пожалуйста, прекратите подавлять ошибки в вашем скрипте.

@$_SESSION['cart_'.$_GET['add']]+='1'; 

Включить отчет об ошибках, чтобы лучше понять, где проблемы в вашем скрипте.

Line 58 в том, что код указывает на:

57 $get = mysql_query("SELECT id, name, price, shipping, shipping2 FROM products WHERE id=".$id); 
58 while($get_row = mysql_fetch_assoc($get)){ 
    ... 

Поскольку вы используете mysql_ ресурс внутри функции, связь, скорее всего, из области видимости. Вы должны передать соединение с функцией или глобализовать соединение.

function paypal_items($conn){ 

Или

function paypal_items(){ 
    global $conn; 

Я упомянул об этом в своем previous question и вы, кажется, игнорируя его; ваш скрипт уязвим для SQL-инъекции. I сильно настоятельно рекомендуем узнать, что это, исправить и переместить в mysqli_ или PDO.

Смежные вопросы

 Смежные вопросы