iT邦幫忙

0

mysqli_num_rows();

https://ithelp.ithome.com.tw/upload/images/20190908/20119815LoZ9HEDgUh.png

請問是不是$result出了問題呢?

看更多先前的討論...收起先前的討論...
dragonH iT邦超人 5 級 ‧ 2019-09-08 20:54:45 檢舉
你把 result 印出來就知道了

不然

他的錯誤訊息應該說得很清楚了
hypons iT邦新手 5 級 ‧ 2019-09-08 21:29:55 檢舉
那個result fail是我印的
但我不知道問題出在哪
ccutmis iT邦高手 2 級 ‧ 2019-09-08 21:32:25 檢舉
可以試試把第一個if($result){....}改成
if (!$result) {
printf("Error: %s\n",mysqli_error($link));
exit();
}
簡單來說我覺得你遇到的問題就是sql查詢結果是空的 如果查詢結果不為空則if(!$result){...}這個程式區塊裡面的東西就不會執行了。
故應把原程式改成
if (!$result) {
printf("沒有查詢結果");
exit();
}else{
/*有查詢結果才繼續作後續的事情*/
$msgnum=....;
for($i=.....){
$row=....;
}
我曾遇過的報錯的經驗大概是這樣:如果你的message是有查詢結果的,就算只有一筆也不會出錯,但如果查詢結果是空的就會出錯。因為你沒有寫最基本的錯誤判斷&處理。
hypons iT邦新手 5 級 ‧ 2019-09-09 00:11:13 檢舉
對,真的是!的問題。後來我google了一些資料,做了些修改就成功顯示了DB的內容。像$row=mysqli_fetch_array($result, MYSQLI_NUM) 我改成了 $row=mysqli_fetch_array($result, MYSQLI_ASSOC);
但還是出現了這句error,不迥我看不懂這句的意思,你可以幫我看看嗎?
1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' 10' at line 1
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /Applications/XAMPP/xamppfiles/htdocs/board/db_func.php on line 8
ccutmis iT邦高手 2 級 ‧ 2019-09-09 08:43:55 檢舉
建議下次發問如果是有原始碼的 請直接貼上原碼 不要用貼圖的
(圖太小那個符號看不清楚是`還是')
你問的error可能跟sql那一行有關,常見的是把 ` 打成 ',其實那一行不要用到` 也是ok的,例如:
$sql="select * from message where 1 order by sn desc limit 1,10";
可以先進phpmyadmin用sql查詢
select * from message where 1 order by sn desc limit 1,10
能不能搜到結果(若回傳空的查詢結果 即零資料列 那就是先前同樣的問題 )
若有搜到至少1筆以上的結果應該是不會報錯了
hypons iT邦新手 5 級 ‧ 2019-09-09 10:12:53 檢舉
已經搞定了,是資料型態的問題。謝謝你。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2019-09-09 08:57:11
最佳解答

錯誤的原因是「參數的資料型態不符」

mysqli_num_rows 要求參數的資料型態是「mysqli_reuslt」

呼叫 mysqli_query 回傳的 $result 有可能有兩種資料型態
1.有查詢到資料時是「mysqli_result」
2.沒有資料時是「boolean」(通常是 false 值)

所以當你把boolean傳進要求mysqli_result參數型態的 function 時就會報錯了

一般會「先判斷是第1種資料型態之後,再做其他處理」
正確的範例寫法如下
https://ithelp.ithome.com.tw/upload/images/20190909/20001787euf6aY1OSE.png

選我正解

同場加送 mysqli_query 的回傳結果說明
https://ithelp.ithome.com.tw/upload/images/20190909/200017871fb6ICHCB1.png

hypons iT邦新手 5 級 ‧ 2019-09-09 10:18:15 檢舉

成功了,謝謝你。

所以我之前的問題是,其實$result=mysqli_query是成功的;所以不是boolean,然後我就把他當成boolean使用,所以就出error了?

之前 mysqli_query 的結果是「沒有資料」
所以 $result 是 false --> 被認為是 boolean --> 出 error

hypons iT邦新手 5 級 ‧ 2019-09-09 11:22:41 檢舉

哦。明白了。謝謝

我要發表回答

立即登入回答