我有一個運行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
但它是否仍然報告相同的錯誤?發佈的代碼似乎不太可能。 –