转换为mysqli - mysql_result - 期望参数2为整数

时间:2017-10-04 08:23:47

标签: php mysqli

我已阅读有关转换为mysqli的所有问题,但无法转换此代码:

// Select how many news should be displayed
if ($u_rank >= 1) {
$sql = mysqli_query($connect_db, "SELECT news_d FROM users_data WHERE uid = '$id'");
$news_d = mysql_result($sql, news_d);
} else {
$news_d = 10;
};

如果我尝试使用自定义功能:

function mysqli_result($res, $row, $field=0) { 
$res->data_seek($row); 
$datarow = $res->fetch_array(); 
return $datarow[$field]; 
}

尝试在我的代码中使用:

$news_d = mysqli_result($sql, news_d);

我收到了这个错误: 警告:mysqli_data_seek()期望参数2为整数,字符串为

帮助将不胜感激,

Best,Misko

2 个答案:

答案 0 :(得分:0)

您传递的BR2_TARGET_ROOTFS_EXT2_SIZE无效。这应该是一个整数。请尝试传递news_d,如下所示:

0

答案 1 :(得分:0)

如果您的真实代码与您在问题中发布的代码相同,则该行中存在明显问题:

$news_d = mysqli_result($sql, news_d);

news_d不是$news_d。它看起来像一个常数(因为它不以$开头)并且它被解释为常量。因为没有名为news_d的常量,解释器会将其转换为字符串。它与:

相同
$news_d = mysqli_result($sql, 'news_d');

constants的PHP文档页面中解释了这种行为:

  

如果使用未定义的常量,PHP假定您指的是常量本身的名称,就像您将其称为stringCONSTANT"CONSTANT"一样)。发生这种情况时,将发出级别E_NOTICE的错误。另请参阅有关$foo[bar]错误原因的手册输入(除非您先将define() bar 作为常量)。

由于mysqli_result()函数将其第二个参数传递给mysqli::data_seek()$res->data_seek($row);),因此它必须是数字,而不是字符串。不幸的是,您发布的代码的目的并不明确。只有你知道你应该传递给mysqli_result()作为第一个参数的数字以及原因。