猿问

MySQLi等价于MySQL_Result()?

MySQLi等价于MySQL_Result()?

我正在将一些旧的PHP代码从MySQL移植到MySQLi,我遇到了一个小麻烦。

是否没有与旧的相提并论的?mysql_result()功能?

我知道呀mysql_result()当您处理超过1行时,它比其他函数要慢,但是很多时候我只有一个结果和一个字段。使用它,我可以将4行压缩为1。

旧代码:

if ($r && mysql_num_rows($r))  
    $blarg = mysql_result($r, 0, 'blah');

所需代码:

if ($r && $r->num_rows)  
    $blarg = $r->result(0, 'blah');

但是没有这样的东西。:(

我遗漏了什么吗?还是我要把它吸进去,然后把所有的东西都编出来:

if ($r && $r->num_rows)  {  
    $row = $r->fetch_assoc();  
    $blarg = $row['blah'];  }


元芳怎么了
浏览 522回答 3
3回答

慕森王

PHP 5.4现在支持函数数组去引用,这意味着你可以这样做:if ($r && $r->num_rows)  {       $row = $r->fetch_assoc()['blah'];  }

江户川乱折腾

当回答我想在回答完同样的问题后,我可以改进答案。下面的函数完全复制MySQL_Result()函数,并在请求超出范围时返回false(空结果,没有该数字的行,也没有该数字的列)。它还有一个额外的好处,即如果不指定行,则假定为0,0(要传递的值减少一个)。对该函数进行了更新,以便对字段进行数值偏移。或者字段名。function&nbsp;mysqli_result($res,$row=0,$col=0){&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;$numrows&nbsp;=&nbsp;mysqli_num_rows($res);&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($numrows&nbsp;&&&nbsp;$row&nbsp;<=&nbsp;($numrows-1)&nbsp;&&&nbsp;$row&nbsp;>=0){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysqli_data_seek($res,$row); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$resrow&nbsp;=&nbsp;(is_numeric($col))&nbsp;?&nbsp;mysqli_fetch_row($res)&nbsp;:&nbsp;mysqli_fetch_assoc($res); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(isset($resrow[$col])){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$resrow[$col]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;}

拉莫斯之舞

function&nbsp;db_result($result,$row,$field)&nbsp;{&nbsp; &nbsp;&nbsp;if($result->num_rows==0)&nbsp;return&nbsp;'unknown';&nbsp; &nbsp;&nbsp;$result->data_seek($row); &nbsp;&nbsp;$ceva=$result->fetch_assoc();&nbsp; &nbsp;&nbsp;$rasp=$ceva[$field];&nbsp; &nbsp;&nbsp;return&nbsp;$rasp;&nbsp;}
随时随地看视频慕课网APP
我要回答