PHP SQL错误资源#6

时间:2011-07-27 12:27:46

标签: php mysql sql

这是我的代码:

//Connect to config file
include(dirname(__FILE__)."/../config.php");
//Connect to the database
$db = mysql_connect("$dbHost", "$dbUser", "$dbPass") or die ("Error connecting to database.");
mysql_select_db("$dbDatabase", $db) or die ("Couldn't select the database.");

//Get Total Products
$result = mysql_query("SELECT * FROM $dbProductsTable WHERE sub_cat = '$subcat'");
$TotalProducts = mysql_num_rows($result);

//Create Pages
if (TotalProducts <= 12){
    $pages = '';
}else{
    $pages = "                  <ul id=\"pagination\" class=\"group\">
                        <li><a class=\"current\" href=\"#\">1</a></li>
                        <li><a href=\"#\">2</a></li>
                        <li><a href=\"#\">3</a></li>
                        <li><a href=\"#\">4</a></li>
                    </ul>";
}




//Get from sql info we need
$sql = mysql_query("SELECT * FROM $dbProductsTable WHERE sub_cat = '$subcat' LIMIT 0 , 12");
$data = mysql_query($sql) or die(mysql_error());

//Make first letter UpperCase
$subcatname = ucfirst($subcat);
//Get Basket Count
$basketcount = count($_COOKIE['products']);

//Get All Products
while($row = mysql_fetch_array($data))
{
//Get Product Path
$productPath = $Domain.'/'.strtolower($row['category']).'/'.str_replace(" ","",$row['product_name']).'_'.$row['product_id'];

//Build Products List
$products = $products."     <li class=\"all-products-list-item\">
            <a href=\"$productPath\" title=\"{$row['product_name']}\"><img src=\"$ProductImageFolder{$row['thumb_image']}\" alt=\"{$row['product_name']}\" border=\"0\" height=\"245\" width=\"180\"/></a>
            <h3><a href=\"$productPath\">{$row['product_name']}</a></h3>
            <p>£{$row['price']}</p>
        </li>\n";
}

这是错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #6' at line 1

我试过通过phpmyadmin运行它并且sql工作完美,我无法找到问题所在?

由于

3 个答案:

答案 0 :(得分:4)

这是错误:

//Get from sql info we need
$sql = mysql_query("SELECT * FROM $dbProductsTable WHERE sub_cat = '$subcat' LIMIT 0 , 12");
$data = mysql_query($sql) or die(mysql_error());

将其更改为

//Get from sql info we need
$sql = "SELECT * FROM $dbProductsTable WHERE sub_cat = '$subcat' LIMIT 0 , 12";
$data = mysql_query($sql) or die(mysql_error());

您正在使用$sql = mysql_query(...)运行查询,并将资源分配给变量$sql。在此之后,您尝试使用变量$sql作为参数运行查询。此时$sql将包含资源,而不是查询。

答案 1 :(得分:0)

$result = mysql_query("SELECT * FROM $dbProductsTable WHERE sub_cat = '$subcat'");

替换它
$sql = "SELECT * FROM $dbProductsTable WHERE sub_cat = '$subcat'";
var_dump($sql);
$result = mysql_query($sql);

认为这有帮助

修改

要做什么:

$db = mysql_connect("$dbHost", "$dbUser", "$dbPass");

这样写:

$db = mysql_connect($dbHost, $dbUser, $dbPass);

答案 2 :(得分:-1)

  

SELECT * FROM $ dbProductsTable

PHP在这里看到一个PHP变量并替换它的值(在这种情况下为$ db)

SQL实体标识符应遵循命名约定 - 允许表名以字母以外的任何内容开头的命名约定是个坏主意,它们应该只包含字母和数字。

尝试:

mysql_query("SELECT * FROM `\$dbProductsTable` 
     WHERE sub_cat = '$subcat' LIMIT 0 , 12");