2013-02-16 1 views
-4

나는 이것이 오늘 마지막 질문 일 것이라고 약속한다. '() mysql_fetch_assoc : 경고 공급 인수는 라인 (58)에 /home/a1014025/public_html/practice/cart/cart.php에 유효한 MySQL의 결과 리소스 아니다'그러나 나는 오류가 발생했습니다 :경고 : mysql_fetch_assoc() : 제공된 인수가 PHP에서 유효한 MySQL 결과 리소스가 아닙니까?

<?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> 
이 코드 당신이 라인 57에 당신의 SQL에 오류가 같은

+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+MSQL+result+resource –

답변

-1

이 보이는 - ID에 대한 값은 따옴표로해야한다 :

$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'; 

오류보고를 사용하면 스크립트의 문제점을보다 잘 파악할 수 있습니다. 해당 코드 포인트

행 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으로 이동하십시오.

관련 문제