我正在尝试将一些信息插入到我的数据库中的新表中。为此,我从两个表和一个外部参照表中查询信息,然后我尝试像往常一样进行插入。这不起作用。 这是代码,
$query = "select listaA.product_s_desc, category_name, listaA.product_desc, listaA.product_sku
from listaA, jos_vm_category, jos_vm_product_category_xref
where listaA.product_id = jos_vm_product_category_xref.product_id
and jos_vm_category.category_id = jos_vm_product_category_xref.category_id limit 10";
$result = mysql_query($query);
$row = mysql_fetch_array($result) or die;
do{
$imagen = 'http://accesoriosazteca.mx/imagesite/'.$row['listaA.product_sku'].".png";
mysql_query("insert into lista_importat (id, activo, sku, nombre, categoria, descripcion_corta, descripcion_larga, pedidos, mostrar_precio, imagen)
values ('$row['listaA.product_id']', '1', '$row['listaA.product_sku']', '$row['listaA.product_s_desc']', '', '$row['listaA.product_s_desc']', '$row['listaA.product_desc']', '0', '0', '$imagen')");
}while($row = mysql_fetch_array($result));
使用上面的代码,我得到一个空白屏幕,没有任何内容插入到新表中。有什么想法吗?
答案 0 :(得分:1)
如果查询开始......
select listaA.product_s_desc, ...
返回结果集,结果集中的第一列的列名称为product_s_desc
,而不是listaA.product_s_desc
。
(在mysql命令行客户端中运行查询将演示此行为。)
在$row
中引用该列的值:
$row['product_s_desc']
请注意,查询不会返回名称为listaA.product_id
的列。
除了回答你提出的问题之外,还有一些注意事项:
为了读者的利益,我建议您放弃连接操作的旧学校逗号语法,并在其中使用JOIN关键字,并将连接谓词从WHERE子句重定位到ON子句。我还建议使用短表别名,并且还限定所有列引用。例如:
SELECT a.product_s_desc
, c.category_name
, a.product_desc
, a.product_sku
FROM listaA a
JOIN jos_vm_product_category_xref r
ON r.product_id = a.product_id
JOIN jos_vm_category c
ON c.category_id = r.category_id
ORDER BY 1
LIMIT 10