无法使用PHP将查询结果插入表中

时间:2014-06-26 18:00:13

标签: php mysql sql

我正在尝试将一些信息插入到我的数据库中的新表中。为此,我从两个表和一个外部参照表中查询信息,然后我尝试像往常一样进行插入。这不起作用。 这是代码,

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

使用上面的代码,我得到一个空白屏幕,没有任何内容插入到新表中。有什么想法吗?

1 个答案:

答案 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