2017-04-09 37 views
0

我想更新旧脚本,如下所示。从MySQL到mysqli更新代码

mysql sql statement that works is: 
$result = mysql_query("SELECT products.products_id AS id, 
products_description.products_name AS name, 
products.products_quantity AS quantity, products.products_weight AS weight, 
products.products_price AS price 
FROM products, products_description WHERE 
products.products_id=products_description.products_id;") or 
die(mysql_error()); 

while($row = mysql_fetch_array($result)) { 

的mysqli的声明,我不能去工作是:

$sql = "SELECT products_id, products_description.products_name, 
products_quantity, products_weight, products_price FROM products INNER JOIN 
products_description on products.products_id = 
products_description.products_id"; 

$result = mysqli_query($con, $sql); 
if(mysqli_num_rows($result)>0){ 


while(null !== ($row = mysqli_fetch_assoc($result))) { 

我收到的错误是:

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean 
given in index.php on line 19 

和mysqli声明工作,但不是当我添加products_description.products_name来查询。

回答

1

mysqli_query()返回:

对于成功的SELECT,SHOW,DESCRIBE,或解释的查询将返回一个mysqli_result对象。

对于其他成功的查询,它将返回TRUE。 FALSE的失败

可以清楚地看出,从你的错误,你得到False$result你,然后传递mysqli_num_rows(),其中预计为mysqli_result

如果列表productsproducts_description中存在相同的列名称,则需要修改$sql,因为可能存在模糊的列错误。

$sql = "SELECT p.products_id, pd.products_name, p.products_quantity, p.products_weight, p.products_price 
FROM products p 
INNER JOIN products_description pd on p.products_id = pd.products_id"; 
+0

工作就像一个梦想satish!学习如何在PDO中做到这一点 – craig

+0

很高兴知道。也许这也将是有益的:https://code.tutsplus.com/tutorials/pdo-vs-mysqli-which-should-you-use--net-24059 –