我试图从MySQL表中选择数据,但我收到以下错误消息之一:
mysql_fetch_array()期望参数1是资源,给定布尔值
要么
mysqli_fetch_array()期望参数1为mysqli_result,给定布尔值
要么
在布尔/非对象上调用成员函数fetch_array()
这是我的代码:
$username = $_POST['username'];
$password = $_POST['password'];
$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username');
while($row = mysql_fetch_array($result)) {
echo $row['FirstName'];
}
Run Code Online (Sandbox Code Playgroud)
这同样适用于代码
$result = mysqli_query($mysqli, 'SELECT ...');
// mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given
while( $row=mysqli_fetch_array($result) ) {
...
Run Code Online (Sandbox Code Playgroud)
和
$result = $mysqli->query($mysqli, 'SELECT ...');
// Call to a member function fetch_assoc() on a non-object
while( $row=$result->fetch_assoc($result) ) {
...
Run Code Online (Sandbox Code Playgroud)
和
$result = $pdo->query('SELECT ...', PDO::FETCH_ASSOC);
// Invalid …
Run Code Online (Sandbox Code Playgroud) 在我的本地/开发环境中,MySQLi查询执行正常.但是,当我在我的Web主机环境中上传它时,我收到此错误:
致命错误:在...中的非对象上调用成员函数bind_param()
这是代码:
global $mysqli;
$stmt = $mysqli->prepare("SELECT id, description FROM tbl_page_answer_category WHERE cur_own_id = ?");
$stmt->bind_param('i', $cur_id);
$stmt->execute();
$stmt->bind_result($uid, $desc);
Run Code Online (Sandbox Code Playgroud)
为了检查我的查询,我试图通过控制面板phpMyAdmin执行查询,结果是OK.
我正在尝试编写“通用”函数来执行 SQL 查询并返回 JSON 并处理其中的错误。在处理过程中,有一些我不明白的事情 - 为什么 try catch 块不处理错误。(稍后我将改进逻辑 - 问题与此无关,而纯粹与错误处理有关)。
这是我的代码:
public
function sqlToJSON($query, $type = array(), $params = array())
{
try {
$data = array();
$stmt = $this->mysqli->prepare($query);
if (count($type) > 0 && count($params) > 0) {
call_user_func_array(array($stmt, "bind_param"), array_merge(array($type), $params));
}
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
$stmt->free_result();
$stmt->close();
return array('result' => 'success', 'error' => null, 'data' => $data);
} catch (Exception $e) {
$this->sqlError = 'Caught exception: ' …
Run Code Online (Sandbox Code Playgroud)