2017-04-09 22 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オブジェクトを返しますクエリをEXPLAIN。

他の成功したクエリの場合、TRUEを返します。あなたのエラーから明らかなように、障害

にFALSE、あなたはその後、mysqli_resultとして期待する、mysqli_num_rows()に渡している$resultとしてFalseを得ています。

テーブル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

夢のように働いた!! PDOでこれを行う方法を学ぶには – craig

+0

お気軽にお問い合わせください。これも参考になるでしょう:https://code.tutsplus.com/tutorials/pdo-vs-mysqli-which-should-you-use--net-24059 –