我理解如何在mysqli中获取结果,但是如何为mysqli编写这个例子?
$t=mysql_query($query);
return (mysql_result($t, 0) === '1') ? true : false;
第一行很简单,但你如何做第二行呢?
$t=mysqli_query($mysqli, $query);
return (mysql_result($t, 0) === '1') ? true : false;
我用mysqli_result替换了mysql_result,它似乎有效,但我的编辑器并不认识mysqli_result作为php的一部分。
只想检查这是否正确。
谢谢你看看。
答案 0 :(得分:1)
尝试
$t=mysqli_query($mysqli, $query);
return (mysqli_result($t, 0) === '1') ? true : false;
function mysqli_result($res, $row, $field=0) {
$res->data_seek($row);
$datarow = $res->fetch_array();
return $datarow[$field];
}
答案 1 :(得分:-1)
我用过这个解决方案,但有一个问题!
mysql_result支持结果集中的表前缀
SELECT a.timestamp, b.timestamp FROM table a, table b
使用mysql_result,可以直接使用
访问这些结果mysql_result($res,0,"a.timestamp");
虽然使用mysql_fetch关联这是不可能的,因为第一个时间戳将被第二个时间戳覆盖。 但是,如果您将结果作为数字返回,并且扫描结果集的字段,则可以模仿此项:
function mysqli_result($result, $row, $field) {
$result->data_seek($row);
// for no table prefix just go ahead and fetch assoc
if ( strstr($field, ".") === false ) {
// Fetch result array
$data = $result->fetch_assoc();
return $data[$field];
}
// workaround for assoc use and overwriting fieldnames like "a.timestamp" and "b.timestamp"
list($tablename,$fieldname) = explode(".",$field);
$resultData = $result->fetch_array(MYSQLI_NUM);
foreach( $result->fetch_fields() as $index => $fieldData ) {
if ( $fieldData->table == $tablename && $fieldData->name == $fieldname ) {
return $resultData[$index];
}
}
return false;
}
现在可以像以前一样使用mysqli_result($ res,0,“a.timestamp”);