我不是phpMaven,我开发了一个查询mysql数据库的小服务。
然而,我用PHP5.4开发,然后发现我的web托管计划有5.2.6,所以我在一些未定义的函数方面遇到了一些问题。
具体来说,在这种情况下,我如何解决mysqli\u stmt\u get\u result undefined函数>5.3?代码如下:
$stmt = mysqli_prepare($con,$db_query);
if($stmt) {
mysqli_stmt_bind_param($stmt,'ss',$after,$lang);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt); // <-- getting undefined error here !!!
$updated = array();
$deleted = array();
while($row = mysqli_fetch_assoc($result)) {
if($row['status']==1) {
array_push($updated,$row);
} else {
$cardName=$row['cardName'];
$cardStatus=$row['status'];
$cardId=$row['cardId'];
$language=$row['language'];
array_push($deleted,array(
'cardName'=>$cardName,
'status'=>$cardStatus,
'cardId'=>$cardId,
'language'=>$language
)
);
}
}
$response = array(
'cards'=>array(
'updated'=>$updated,
'deleted'=>$deleted
)
);
$json = json_encode($response);
mysqli_close($con);
echo $json;
}
关键是我使用的是一个预先准备好的语句,由于我缺乏php知识,我没有找到其他方法来解决这个问题而不重写整个脚本。
我想你们中的一些人可能有一个简单易行的解决办法。
3条答案
按热度按时间ep6jt1vc1#
也有类似的问题。顺便说一句,mysqlnd在5.3中提供,但必须在中编译。5.4,它默认在那里。
在我的例子中,我能够保留大部分代码,并通过替换以下代码使其工作
具有
cgvd09ve2#
如果您处于不允许添加mysqlnd的情况下,这将显示如何在没有mysqli\u stmt\u get\u result()的情况下将数据获取到关联数组中。mysqli-将结果绑定到数组
hfsqlsce3#
这个
mysqli_stmt_get_result
函数仅为PHP5.3或更高版本。您的PHP5.2.x版本不支持它(顺便说一句,它不再受支持)。另一种方法是使用
mysqli_stmt_bind_result
使用变量绑定。在您的具体示例中,这甚至还有一个好处,即您不需要将数组成员赋给变量,因为您可以直接绑定变量。
这个
mysqli_stmt_get_result
函数的引入是因为有人认为这会阻碍您的工作,而且获得数组会更容易。