iT邦幫忙

1

MYSQL資料表新增資料後,透過網站的搜尋網頁卻搜尋不到新增的資料

  • 分享至 

  • xImage

%%%%已經把問題解決了,衷心感謝大家幫忙。%%%%
原因是我使用A, B兩個虛擬主機網站,兩者各有一個名稱類似的mySQL DATABASE、與相同名稱的使用者、TABLE。目的是用B主機模擬。兩者原本都有1248筆的相同資料。
後來我在A主機資料庫有再增加多筆資料,B主機資料庫則沒有增加。
魔鬼藏在細節裡,悲劇出於大意中。接下來就是出差錯的地方:我在A主機搜尋資料庫中的資料,不幸的是程式碼中一直錯用成B主機的資料庫名稱,所以在A後續增加的資料當然找不到!!
當我無意中發現這個原因的時候,心都涼了一半!
奇怪的是,在A主機竟然可以叫用B主機的 DATABASE。
由於我的粗心,以致於造成社會大眾的不安,以及浪費了龐大的社會成本,在此僅表達最深的歉意。

原問題================================
MYSQL資料表list1原有1248筆資料,後來再增加多筆資料,無論是
在phpMyASdmin直接新增,
或是整個用SQL格式檔案"重新"匯入,
或是用CSV格式檔案"重新"匯入(或僅匯入新增的那幾筆資料),
結果在網站網站的php搜尋網頁卻搜尋不到第1248筆以後新增的資料
第1248筆以前的資料卻都可以搜尋到

新增資料有成功,沒有錯誤訊息。在phpMyASdmin資料庫裡面查詢是可以查詢到的,但是在網站網頁上面就是查詢不到。

程式碼

以上恕略
$form_number=$_POST[number];
$connect->query("SET NAMES 'utf8'");
$selectSql = "SELECT * FROM list1 WHERE data_number = '$form_number'";

$memberData = $connect->query($selectSql);
if ($memberData->num_rows > 0) {
while ($row = $memberData->fetch_assoc()) {
以下恕略

請問各位先進,這是何種原因?應該如何解決?

看更多先前的討論...收起先前的討論...
問題出在網站程式碼吧...@@
bayata iT邦新手 5 級 ‧ 2021-03-09 11:00:22 檢舉
謝謝您回覆:
程式碼
以上恕略
$form_number=$_POST[number];
$connect->query("SET NAMES 'utf8'");
$selectSql = "SELECT * FROM list1 WHERE data_number = '$form_number'";

$memberData = $connect->query($selectSql);
if ($memberData->num_rows > 0) {
while ($row = $memberData->fetch_assoc()) {
以下恕略
話說phpMyASdmin沒這個吧@@~怎麼大家回答都打成phpMyASdmin
不是phpMyAdmin嗎?多了一個大S的字
bayata iT邦新手 5 級 ‧ 2021-03-09 13:08:30 檢舉
哈哈!可能大家為了求快,直接COPY吧!
bayata iT邦新手 5 級 ‧ 2021-03-10 06:26:35 檢舉
昨天晚上已經把問題解決了,衷心感謝大家幫忙。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
海綿寶寶
iT邦大神 1 級 ‧ 2021-03-09 10:14:54
最佳解答

在 phpMyASdmin 查詢 1248 筆以後的資料
1.查不到...原因:新增/匯入時已失敗;解決:看錯誤訊息
2.查得到...原因:php 搜尋網頁程式;解決:看 SQL 敍述/PHP 程式碼

看更多先前的回應...收起先前的回應...
bayata iT邦新手 5 級 ‧ 2021-03-09 10:52:12 檢舉

謝謝您回覆:
1.查不到...原因:新增資料有成功,沒有錯誤訊息。在phpMyASdmin資料庫裡面查詢是可以查詢到的,但是在網站網頁上面就是查詢不到。

2.查得到...原因:程式碼

以上恕略
$form_number=$_POST[number];
$connect->query("SET NAMES 'utf8'");
$selectSql = "SELECT * FROM list1 WHERE data_number = '$form_number'";

$memberData = $connect->query($selectSql);
if ($memberData->num_rows > 0) {
while ($row = $memberData->fetch_assoc()) {
以下恕略

在 $selectSql = "SELECT... 下面緊接著加上
echo "[" . $selectSql . "]"
然後把顯示出來的(SQL 敍述部份)拿去 phpMyASdmin 執行看看

1.查不到...修正 SQL 敍述/PHP 程式碼
2.查得到...我就不知道原因了
/images/emoticon/emoticon25.gif

bayata iT邦新手 5 級 ‧ 2021-03-09 11:45:03 檢舉

出現這個:
[SELECT * FROM list1 WHERE data_number = 'TW8709146616']No data found.
該號碼在phpMyASdmin搜尋這個資料表,卻可以找到這筆資料

archer9080 iT邦研究生 4 級 ‧ 2021-03-09 11:56:31 檢舉

貼這段到
SELECT * FROM list1 WHERE data_number = 'TW8709146616'進行查詢

如果沒理解錯

這段在網頁上只出來1248以後的資料?
還是連phpMyASdmin查詢後 裡面也沒有1248以後新增的資料?

最後一猜
php 程式連的「資料庫」和 phpMyASdmin 連的「資料庫」不同
如果你確認相同
那我就不會了
看別的高手怎麼說囉...
/images/emoticon/emoticon25.gif

bayata iT邦新手 5 級 ‧ 2021-03-09 12:24:11 檢舉

您是說把
SELECT * FROM list1 WHERE data_number = 'TW8709146616'
拿去 phpMyASdmin 的哪裡執行?

在phpMyASdmin直接新增

大概是相同地方,如下圖
資料庫和 Table 要選你 php 程式裡連接的那個
https://ithelp.ithome.com.tw/upload/images/20210309/20001787Ad5TrG7KBO.png

bayata iT邦新手 5 級 ‧ 2021-03-09 13:05:09 檢舉

有出現該筆資料

bayata iT邦新手 5 級 ‧ 2021-03-09 13:05:49 檢舉

有出現該筆資料

archer9080 iT邦研究生 4 級 ‧ 2021-03-09 13:35:18 檢舉
$form_number=$_POST[number];

$connect->query("SET NAMES 'utf8'");

$selectSql = "SELECT * FROM iapcaorg_certificates.list1 WHERE data_number = '$form_number'";

$memberData = $connect->query($selectSql);

if ($memberData->num_rows > 0) {
    
    echo $selectSql;//這段貼phpmyadmin 的 SQL查詢
    
    while ($row = $memberData->fetch_assoc()) {
    
        echo $row['id'];//應該出來1286
        
    }
    
}

try try,$selectSql 值echo的出來 但1286沒出來的話
貼上你connect mysql 的 code
只能待其他大神處理了/images/emoticon/emoticon70.gif

bayata iT邦新手 5 級 ‧ 2021-03-10 06:27:03 檢舉

昨天晚上已經把問題解決了,衷心感謝大家幫忙。

1.方便的話請將原因補充至問題中
2.有空的話請選最佳解答以進行結案動作

rogeryao iT邦超人 8 級 ‧ 2021-03-10 09:43:00 檢舉

+1

bayata iT邦新手 5 級 ‧ 2021-03-10 14:38:27 檢舉

1.以下解答有加到問題中。2.選最佳解答以進行結案動作,不知該怎麼用?
原因是我使用A, B兩個虛擬主機網站,兩者各有一個名稱類似的mySQL DATABASE、與相同名稱的使用者、TABLE。目的是用B主機模擬。兩者原本都有1248筆的相同資料。
後來我在A主機資料庫有再增加多筆資料,B主機資料庫則沒有增加。
魔鬼藏在細節裡,悲劇出於大意中。接下來就是出差錯的地方:我在A主機搜尋資料庫中的資料,不幸的是程式碼中一直錯用成B主機的資料庫名稱,所以在A後續增加的資料當然找不到!!
當我無意中發現這個原因的時候,心都涼了一半!
奇怪的是,在A主機竟然可以叫用B主機的 DATABASE。
由於我的粗心,以致於造成社會大眾的不安,以及浪費了龐大的社會成本,在此僅表達最深的歉意。

archer9080 iT邦研究生 4 級 ‧ 2021-03-10 15:44:15 檢舉

php 程式連的「資料庫」和 phpMyASdmin 連的「資料庫」不同

那海綿大神猜的就沒錯了/images/emoticon/emoticon12.gif

1.謝謝你把原因寫得這麼清楚,很有誠意/images/emoticon/emoticon12.gif
2.在所有回答裡選一個對你最有幫助的,點「選為最佳解答」如下圖

1
japhenchen
iT邦超人 1 級 ‧ 2021-03-09 10:06:27

確定一下是不是有真的寫進資料庫?
或是硬碟空間已滿寫不進去?
或是你根本沒有INSERT的權限,寫入被拒?

看更多先前的回應...收起先前的回應...
bayata iT邦新手 5 級 ‧ 2021-03-09 10:56:26 檢舉

謝謝您回覆:
新增資料有成功,沒有錯誤訊息。在phpMyASdmin資料庫裡面查詢是可以查詢到的,但是在網站網頁上面就是查詢不到。

那只能查伺服器上的APACHE/PHP(或其他)是否做靜態化或快取處理

會不會有關連到哪個表?LEFT JOIN不到東西就不顯示?

bayata iT邦新手 5 級 ‧ 2021-03-09 12:59:11 檢舉

應該沒有關連到其他表,環境還很單純

bayata iT邦新手 5 級 ‧ 2021-03-10 06:26:47 檢舉

昨天晚上已經把問題解決了,衷心感謝大家幫忙。

0
達達
iT邦新手 5 級 ‧ 2021-03-09 11:41:42

抱歉,我不知道什麼是phpMyASdmin
但我在想是不是commit的問題,因為在某些DB裡,你新增後沒commit的話,可以select的到這筆新資料,又因為沒commit的關係,用網頁select的話會找不到新資料
驗證的方法,就照海綿大的做法,直接把網頁使用的select語法弄出來,先看語法有沒有錯誤,如果沒有錯誤的話,放到phpMyASdmin裡執行,看找不找的到資料(如果原因是這個的話,最佳解給海綿大吧,他的步驟是正確的debug程序)

bayata iT邦新手 5 級 ‧ 2021-03-09 12:57:45 檢舉

好的,謝謝您。
執行結果有出現該筆資料。

bayata iT邦新手 5 級 ‧ 2021-03-10 06:27:19 檢舉

昨天晚上已經把問題解決了,衷心感謝大家幫忙。

0
rogeryao
iT邦超人 8 級 ‧ 2021-03-09 11:53:50

在 phpMyAdmin 及 php 內執行以下 SQL ,筆數是否一樣

SELECT COUNT(*) FROM list1

A.不一樣 : 寫入失敗或 phpMyASdmin 與 php 的連線主機不一樣
https://ithelp.ithome.com.tw/upload/images/20210309/20085021382uBAbLrF.png
檢查 PHP 程式內的 MySql 連線設定是否正確,localhost 是正確的主機 ?

B.一樣 :

$selectSql = "SELECT * FROM list1 WHERE data_number = '$form_number'";
改成
$selectSql = "SELECT * FROM list1 WHERE TRIM(data_number) = '".TRIM($form_number)."'";
bayata iT邦新手 5 級 ‧ 2021-03-10 06:27:36 檢舉

昨天晚上已經把問題解決了,衷心感謝大家幫忙。

0
純真的人
iT邦大師 1 級 ‧ 2021-03-09 14:47:55

我有一個想法..你試試@@..

$selectSql = "SELECT * FROM list1 WHERE id=1286";

你這樣先試試看有無資料...

bayata iT邦新手 5 級 ‧ 2021-03-10 06:27:44 檢舉

昨天晚上已經把問題解決了,衷心感謝大家幫忙。

我要發表回答

立即登入回答