2016-03-13 46 views
-2

什麼在下面的代碼是引起警告:非法字符串偏移量'在'因爲PHP 5.4版本無法找到修復?警告:非法字符串偏移PHP的推車和mysql表

<?php 

     include "data.php"; 

     function checkStock($id_film){ 
      $query_stock = "SELECT stockquantity FROM table WHERE id = {$id_film}"; 
      $result_stock = mysql_query($query_stock); 
      $row = mysql_fetch_row($result_stock); 
      echo $row[0]['quantity']; //this where the error is 
     } 
+0

我敢打賭,你只是想''行['數量'];' - 你試過'var_dump($ row);'看看裏面究竟是什麼? – rjdown

+0

快速回復這是錯誤回聲$ row [0] ['quantity'];和var_dump($ row);似乎擺脫了錯誤 – paul

回答

0

強制性懲罰:不要使用mysql API;它的過時,已經從PHP 7.完全去除現在,這是出路......

$row = mysql_fetch_row($result_stock);返回單行數據一維數組。您對$row[0]['quantity']的引用正試圖取消引用二維數組,所以當然由於第二個維度不存在而出現錯誤。

rjdown是正確的;您只需要$row['quantity'],其中選擇當前行的quantity列。

+0

我知道php7是即時通訊使用php5我沒有選擇。任何想法讓它使用這個版本? – paul

+0

我的答案是'mysql' API。試一試。 –

0

你已經使用mysql_fetch_row,它返回數據庫的單行作爲一個數組,你可以像$ row [0],$ row [1],...訪問信息......在你的情況下,似乎你正在訪問一個字段一個唯一的記錄,那麼你只有一個字段被返回,如果找到,或者如果沒有找到,則返回null。如果你想訪問像關聯數組那樣的信息,使用mysql_fetch_assoc,那麼結果將被存儲在像$ row ['quantity']這樣的關聯數組中。 所以嘗試編輯這部分

$row = mysql_fetch_row($result_stock); echo $row[0]['quantity']; 

像這樣

$row = mysql_fetch_assoc($result_stock); echo $row['quantity']; 
+0

它的股票控制,所以如果項目缺貨'出'顯示的想法是阻止用戶去任何進一步的訂單 – paul

1

如果您想進行調試,你可以寫:

$row = mysql_fetch_row($result_stock); 

echo "<pre>"; 
print_r($row); 
echo "</pre>"; 

這會給你一個想法是什麼該數組看起來像。從你的MySQL查詢,它可能會像:

Array(
    "quantity" => 5 
) 

所以,這應該工作:

echo $row['quantity']; 

instead of 

echo $row[0]['quantity']; 

希望這有助於。

和平! xD

+0

echo $ row [0] ['quantity'];沒有[0]它不顯示我需要的值 – paul

+0

那麼,你可以做print_r的東西,讓我知道你得到的數組嗎? –

+0

迄今爲止最好的回答。 陣列 ( [0] => 1 ) 缺貨 陣列 ( [0] => 1 ) 一個產品的inStock – paul

相關問題