从mysql转换为mysqli(mysql_fetch_array)[重复]
Posted
技术标签:
【中文标题】从mysql转换为mysqli(mysql_fetch_array)[重复]【英文标题】:Converting from mysql to mysqli (mysql_fetch_array) [duplicate] 【发布时间】:2012-05-18 02:04:27 【问题描述】:我有一些这样的 php 代码:
$row = mysql_fetch_array ( mysql_query("SELECT * FROM `tblFacilityHrs` WHERE `uid` = '$uid'"));
我现在正尝试将其转换为mysqli_fetch_array
,如此处所示http://php.net/manual/en/mysqli-result.fetch-array.php(示例#1 面向对象的样式)
我不确定示例中的“$result”是什么意思。
这是我到目前为止将代码转换为的内容:
<?php
include('../config.php');
if (isset($_GET['uid']) )
$uid = $_GET['uid'];
$id = $_GET['id'];
if (isset($_POST['submitted']))
foreach($_POST AS $key => $value) $_POST[$key] = mysqli_real_escape_string($value);
//Query for tblFacilityHrs
$sql = " UPDATE tblFacilityHrs SET `title`='$_POST['title']',`description`='$_POST['description']' WHERE `uid` = '$uid' ";
$result = $mysqli->query($sql) or die($mysqli->error);
//Query for tblFacilityHrsDateTimes
$sql2 = "UPDATE tblFacilityHrsDateTimes SET `startEventDate`='$_POST['startEventDate']',`endEventDate`='$_POST['endEventDate']', `startTime`='$_POST['startTime']',`endTime`='$_POST['endTime']',`days`='$_POST['days']',`recurrence`='$_POST['recurrence'],`finalDate`='$_POST['finalDate']' WHERE `id` = '$id' "; print $sql2;
$result2 = $mysqli->query($sql2) or die($mysqli->error);
echo ($mysqli->affected_rows) ? "Edited row.<br />" : "Nothing changed. <br />";
echo "<a href='list.php'>Back</a>";
$row = $result->fetch_array($mysqli->query("SELECT * FROM `tblFacilityHrs` WHERE `uid` = '$uid'"));
$row2 = $result2->fetch_array($mysqli->query("SELECT * FROM `tblFacilityHrsDateTimes` WHERE `id` = '$id'"));
?>
我在学习mysqli时可能有很多问题,但现在它出错了
致命错误:调用成员函数 fetch_array()
【问题讨论】:
【参考方案1】:看起来您正在尝试使用旧的结果对象(更新的结果)来获取新查询的结果。您需要先运行新查询,将其结果分配给对象,然后从对象中获取结果。查看重新编写的脚本的最后三行:
$facilityHoursQueryResult = $mysqli->query("SELECT * FROM `tblFacilityHrs` WHERE `uid` = '$uid'");
$facilityHoursDateTimesQueryResult = $mysqli->query("SELECT * FROM `tblFacilityHrsDateTimes` WHERE `id` = '$id'");
$facilityHoursRow = $facilityHoursQueryResult == FALSE ? NULL : $facilityHoursQueryResult->fetch_array();
$facilityDateTimesRow = $facilityHoursDateTimesQueryResult == FALSE ? NULL : $facilityHoursDateTimesQueryResult->fetch_array();
?>
这是一个有用的页面,其中包含其他结果对象方法: http://www.php.net/manual/en/class.mysqli-result.php
【讨论】:
【参考方案2】:UPDATE
查询不返回结果对象,它返回TRUE
(假设成功)。然后您尝试拨打TRUE->fetch_array()
,这显然是行不通的。
现在,做你真正想做的事,试试这个:
$row = $mysqli->query("SELECT.....")->fetch_array();
【讨论】:
以上是关于从mysql转换为mysqli(mysql_fetch_array)[重复]的主要内容,如果未能解决你的问题,请参考以下文章