2017-10-05 67 views
0

所以我试图将我的数据库中的所有行都回显到一个文件中,问题在于它缺少大约2800行,无法找到它们。行数与打印的行数不同

我试图把一个try-catch,获取数据的同时进行手动的循环不同的方法槽的结果,移动与data_seek指针....

所以这里是代码

$sql = 'SELECT connectedProducts,id,price,masterprice,cardprice,name,url,fullImage,categoryid1,categoryid2,categoryid3,sku,connectedCategory,connectedPrice,uniqueID 
     FROM sku_new 
     where name !="" and stock="in stock" and price != "" and masterprice != "%No%" 
     and fullimage != "http:" AND price != "No disponible" 
     and masterprice !="No disponible" and cardprice != "No disponible"'; 
$result=mysqli_query($con,$sql); 


while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 
    echo $row['sku']."\r\n"; 
} 

这将打印38854行数据。然而,当我这样做:

$sql = 'SELECT connectedProducts,id,price,masterprice,cardprice,name,url,fullImage,categoryid1,categoryid2,categoryid3,sku,connectedCategory,connectedPrice,uniqueID 
     FROM sku_new 
     where name !="" and stock="in stock" and price != "" and masterprice != "%No%" 
     and fullimage != "http:" AND price != "No disponible" 
     and masterprice !="No disponible" and cardprice != "No disponible"'; 
$result=mysqli_query($con,$sql); 

$row_cnt = $result->num_rows; 
echo $row_cnt; 

我得到41695 ...所以我不知道发生了什么行的其余部分,他们似乎只是dissapear,我已经尝试了不同的方法,试图让他们并没有什么似乎工作...但是,如果我直接在数据库上的DB可视化器上查询,我得到41695行显示正确...我一直在这个问题上打破我的头,它没有任何意义..我是什么做错了?

=====编辑========= 如果我从修改查询:

$sql = 'SELECT connectedProducts,id,price,masterprice,cardprice,name,url,fullImage,categoryid1,categoryid2,categoryid3,sku,connectedCategory,connectedPrice,uniqueID 
      FROM sku_new 
      where name !="" and stock="in stock" and price != "" and masterprice != "%No%" 
      and fullimage != "http:" AND price != "No disponible" 
      and masterprice !="No disponible" and cardprice != "No disponible"'; 

要:

$sql = 'SELECT id,price,masterprice,cardprice,name,url,fullImage,categoryid1,categoryid2,categoryid3,sku,connectedCategory,connectedPrice,uniqueID 
      FROM sku_new 
      where name !="" and stock="in stock" and price != "" and masterprice != "%No%" 
      and fullimage != "http:" AND price != "No disponible" 
      and masterprice !="No disponible" and cardprice != "No disponible"'; 

我得到的所有41695行! !这没有任何意义,我不修改WHERE指令!

+1

他们没有消失,它不符合标准。我敢打赌,如果你在循环中添加更多的行/列,你会看到你得到的。 –

+0

@ Fred-ii-看起来他在两个查询中都有相同的标准。 – Barmar

+0

@Barmar打赌他们只有匹配'$ row ['sku']'而不是其他人的记录数量。 –

回答

1

我认为$row['sku']可以为空的某些记录。试试这个代码,然后检查总数。

$i = 1; 
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 
    echo $i." - ".$row['sku']."\r\n"; 
    $i++; 

} 
+0

我得到38854 - 2000351581089作为最后输出...不会让我最后2k行或... 我编辑了问题发布更新 – Javier