我有一个运行PHP 5.6的网站。该网站的数据库最近从MySQL 5.1升级到MariaDB 10.0(MySQL 5.5兼容),现在我的网站上的查询将无法正常工作(并且在连接到MySQL 5.1数据库时无误。PHP MySQL查询返回0结果,当应该有结果
For在这个演示中,我有一个名为“content”的数据库表,其中包含字段“id”(integer)和“page_title”(var_char)。该表中有两行 - 一个ID为1,page_title为“Test 1”和第二行具有2 ID和PAGE_TITLE设定为“测试2”
我然后使用内部的phpMyAdmin以下查询创建该表的视图:
select `content`.`id` AS `id`,`content`.`page_title` AS `page_title` from `content`
我可以在phpMyAdmin的视图中看到内容表中的视图和两行。
在我的PHP页面上,我有一个面向对象的样式查询。该代码是:
<?php
try {
require_once 'Connections/dbconn.php';
$sql = "SELECT id, page_title FROM v_content WHERE id = 1 LIMIT 1";
$stmt = $db->stmt_init();
if (!$stmt->prepare($sql)) {
$error = $stmt->error;
} else {
$stmt->bind_result($id, $page_title);
$stmt->execute();
$stmt->store_result();
$stmt->fetch();
}
} catch (Exception $e) {
$error = $e->getMessage();
}?>
该查询返回以下:尝试读取一行同时有如果我改变表从VIEW“v_content”刚才的发言
相关联的结果集表“内容”,我得到一个结果返回。此外,如果我使用相同的查询(查询VIEW v_content)并连接到MySQL 5.1数据库,则会返回结果。我知道查询本身没有问题,因为我已经将查询复制并粘贴到phpMyAdmin中并返回了结果,并且在MySQL 5.1数据库上使用完全相同的代码,并返回结果。我检查了错误日志,并且没有显示错误。
任何人都知道什么可能导致我从视图返回0结果?
“尝试读取行...”错误不应出现在SELECT语句中。它通常意味着你试图在'UPDATE'或'INSERT'语句上'获取'(或者你已经关闭了结果集)。你在这里使用'store_result()'看起来很可疑。既然你调用'$ stmt-> fetch()'并且使用了'bind_result()',我不认为你需要'store_result()',尤其是因为你甚至没有把它返回的结果资源存储到一个变量中。删除该行,看看你的情况是否改变。 –
如果我删除 - $ stmt-> store_result(); - 没有什么变化。它仍然返回0结果。 – user2762748
但它是否仍然报告相同的错误?发布的代码似乎不太可能。 –