我正在为我的会员计划编写数据馈送脚本,我真的以为我在“做”,但是当我运行该脚本时,它创建的 CSV 文件只有 28 个产品中的 7 个。在测试之前,我使所有产品都符合查询条件,所以它们都应该被包括在内。我什至删除了库存水平和价格条件。仍然只有 28 个中的 7 个被添加到 csv 文件中,5 个来自一个类别,2 个来自另一个。第一类只有 5 件商品,全部退货。但是第二类的 23 个中只有 2 个被返回。
目标是从查询中的类别中获取所有产品的特定数据,并将它们转储到 csv 文件中。
这是我第一次尝试编写更复杂的 sql 查询(无论如何都是初学者)。
使用 print_r 我发现问题是我的查询。我以为我以前有这个工作。它工作时和现在之间的区别在于我包括了获取 categoryid 和 catparentid。但即使我删除了这些添加,我仍然得到相同的结果。现在我在想,我之前可能认为它在我更大的产品数据库上工作,但也许它实际上并没有返回所有产品,而是因为我认为它们太多了。
完整的脚本很长,但我在下面创建了一个新脚本,只是为了查看查询是否抓取了所有记录……不是。:(
如果我运行查询以检查未关联的产品(即没有类别关联的产品),则所有产品都与一个类别相关联。
所有的产品都有形象和品牌联想,所以我认为这也不是问题。
即使我完全删除 Where 子句,也只能抓取 7 个产品。
我还直接在数据库中运行查询并得到相同的结果:
Showing rows 0 - 6 ( 7 total, Query took 0.0029 sec)
SELECT isc_products.productid, isc_products.prodcode, isc_products.prodname, isc_products.produrl, isc_products.prodcalculatedprice, isc_products.proddesc, isc_products.prodcurrentinv, isc_products.upc, isc_categories.categoryid, isc_categories.catparentid, isc_categories.catname, isc_product_images.imagefilestd, isc_product_images.imagefilethumb, isc_brands.brandname
FROM isc_products
INNER JOIN isc_categories ON isc_products.prodcatids = isc_categories.categoryid
INNER JOIN isc_product_images ON isc_products.productid = isc_product_images.imageprodid
INNER JOIN isc_brands ON isc_products.prodbrandid = isc_brands.brandid
WHERE isc_categories.categoryid =10
OR isc_categories.categoryid =12
数据中是否有任何特殊字符会导致此问题?
还是我错误地使用了内部连接?
<pre>
<?php
// Make a MySQL Connection
mysql_connect("localhost", "myusername", "mypassword") or die(mysql_error());
mysql_select_db("mydatabase") or die(mysql_error());
$result = mysql_query("SELECT isc_products.productid,
isc_products.prodcode,
isc_products.prodname,
isc_products.produrl,
isc_products.prodcalculatedprice,
isc_products.proddesc,
isc_products.prodcurrentinv,
isc_products.upc,
isc_categories.categoryid,
isc_categories.catparentid,
isc_categories.catname,
isc_product_images.imagefilestd,
isc_product_images.imagefilethumb,
isc_brands.brandname
FROM isc_products
INNER JOIN isc_categories
ON isc_products.prodcatids = isc_categories.categoryid
INNER JOIN isc_product_images
ON isc_products.productid = isc_product_images.imageprodid
INNER JOIN isc_brands
ON isc_products.prodbrandid = isc_brands.brandid
WHERE isc_categories.categoryid = 17
OR isc_categories.categoryid = 15
OR isc_categories.categoryid = 16
OR isc_categories.categoryid = 12
OR isc_categories.categoryid = 13
OR isc_categories.categoryid = 14
OR isc_categories.categoryid = 11
OR isc_categories.categoryid = 10
AND isc_products.prodcurrentinv > 1
AND isc_products.prodcalculatedprice > 1.00
ORDER BY isc_categories.catname
")
or die(mysql_error());
while($row = mysql_fetch_array( $result)){
print_r ($row);
}
// end of file
echo '<br/>****** Script successfully run! ******';
?>
</pre>
对此的任何想法将不胜感激。如果您的第一个想法是“为什么不...”,那是因为我不知道或不知道。:) 有一天,我的朋友……有一天我会的。哈哈哈哈
谢谢!