2016-03-13 48 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

相关问题