iT邦幫忙

0

php json_encode問題

這是我的問題 當他沒資料的時候會就會顯示這個段
有方法不顯示這個媽

<br />
<b>Notice</b>:  Undefined variable: output in <b>C:\xampp\htdocs\xampp\index_love.php</b> on line <b>14</b><br />

我的PHP

<?php
require_once("SQL_data.php");
$id=isset($_POST['S1'])<>NULL?$_POST['S1']:"w0630";
$sql="select * from app_shop_favorite   where user_id ='$id'"; 

mysqli_select_db($GD,$database);
$Result=mysqli_query($GD,$sql) or die(mysqli_error($GD));

while($r = mysqli_fetch_assoc($Result)){
$output[]=$r;
}
header('Content-type: application/json; charset=utf-8');
if($output != null)
print(json_encode($output,JSON_UNESCAPED_UNICODE));//JSON_UNESCAPED_UNICODE為中文不轉成unicode碼
exit();
?>
dragonH iT邦超人 5 級 ‧ 2020-04-22 09:35:36 檢舉
在外面先宣告 output 阿
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
㊣浩瀚星空㊣
iT邦大神 1 級 ‧ 2020-04-22 09:34:38
最佳解答

你要有預設變數的習慣才行。
雖然php可以將Notice訊息給關掉。

但如果要養成良好的寫程式習慣。一般還是建議不要關。

你可以在while前。先將 $output 宣告好。如

$output=[];
看更多先前的回應...收起先前的回應...

想說mysql 可以這樣打 換到mysqli就出現 我還以為我php我哪裡語法又錯了 到處找==

你如果回這樣的話,我會超想罵你的。
但我知道你不知道我罵你的意見。

感謝你的回復 我下次會記得先宣告好型態 在使用
而不是 直接使用 我在查mysql跟myqli的差別了/images/emoticon/emoticon41.gif

天啊~~~你真的不知道我想罵你的東西。
好吧,我提示一下。

你碰到的問題,跟mysql還有mysqli沒任何關係。

你完全理解錯方向了。
再去想破腦袋了解一下吧。很基本的東西而已。

我目前只知道 會顯示這個錯誤 是因為我的$Result 沒有資料 導致我的while沒有跑 接者我的$output[]=$r; 沒有執行
環環下來我的$output這個變數 是第一次被電腦看到 所以他不知道我這個事幹嘛的 接下來我真的不知道了 請告訴我/images/emoticon/emoticon02.gif

好,至少你還了解原因。只是不懂過程?原因?(好吧,我也不知道該怎麼說了)

認真來說,要告訴你的是變數宣告的重要性。

雖然php算是一個弱型態的語言。
沒宣告的變數,並不會造成程式中斷。了不起也就是一個通知等級的通告。

但如果想往設計程式這一行的話。就要學好宣告變數的重要性。
你要知道,這幸好是在php。如果是c或是java等語言。
你不將變數給宣告好。根本不給你用。

這邊我只是要告訴你變數宣告的重要性。

跟mysql、mysqli完全沒有關係。
但說到這個,記得之前有人告訴你快學pdo了吧。因該有人說過了。
快換掉吧。

感謝了解了 /images/emoticon/emoticon25.gif

froce iT邦大師 1 級 ‧ 2020-04-22 11:44:31 檢舉

但如果想往設計程式這一行的話。就要學好宣告變數的重要性。你要知道,這幸好是在php。如果是c或是java等語言。你不將變數給宣告好。根本不給你用。

就是因為是弱型態,所以才會發生啊。XD
我自己也常忘記先給初值,不過我是有能力自己debug就是了。

我現在都故意將通知等級給打開。
當然,只是針對新開發的才這樣。

一些以前開發的舊程式,自從更新到7版後,慘不忍賭。
最後還是默默的切回5版。並將警告等級調成最低的。

我要發表回答

立即登入回答