%%%%已經把問題解決了,衷心感謝大家幫忙。%%%%
原因是我使用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()) {
以下恕略
請問各位先進,這是何種原因?應該如何解決?
在 phpMyASdmin 查詢 1248 筆以後的資料
1.查不到...原因:新增/匯入時已失敗;解決:看錯誤訊息
2.查得到...原因:php 搜尋網頁程式;解決:看 SQL 敍述/PHP 程式碼
謝謝您回覆:
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.查得到...我就不知道原因了
出現這個:
[SELECT * FROM list1 WHERE data_number = 'TW8709146616']No data found.
該號碼在phpMyASdmin搜尋這個資料表,卻可以找到這筆資料
貼這段到SELECT * FROM list1 WHERE data_number = 'TW8709146616'
進行查詢
如果沒理解錯
這段在網頁上只出來1248以後的資料?
還是連phpMyASdmin查詢後 裡面也沒有1248以後新增的資料?
最後一猜
php 程式連的「資料庫」和 phpMyASdmin 連的「資料庫」不同
如果你確認相同
那我就不會了
看別的高手怎麼說囉...
您是說把
SELECT * FROM list1 WHERE data_number = 'TW8709146616'
拿去 phpMyASdmin 的哪裡執行?
在phpMyASdmin直接新增
大概是相同地方,如下圖資料庫和 Table 要選你 php 程式裡連接的那個
有出現該筆資料
有出現該筆資料
$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
只能待其他大神處理了
昨天晚上已經把問題解決了,衷心感謝大家幫忙。
1.方便的話請將原因補充至問題中
2.有空的話請選最佳解答以進行結案動作
+1
1.以下解答有加到問題中。2.選最佳解答以進行結案動作,不知該怎麼用?
原因是我使用A, B兩個虛擬主機網站,兩者各有一個名稱類似的mySQL DATABASE、與相同名稱的使用者、TABLE。目的是用B主機模擬。兩者原本都有1248筆的相同資料。
後來我在A主機資料庫有再增加多筆資料,B主機資料庫則沒有增加。
魔鬼藏在細節裡,悲劇出於大意中。接下來就是出差錯的地方:我在A主機搜尋資料庫中的資料,不幸的是程式碼中一直錯用成B主機的資料庫名稱,所以在A後續增加的資料當然找不到!!
當我無意中發現這個原因的時候,心都涼了一半!
奇怪的是,在A主機竟然可以叫用B主機的 DATABASE。
由於我的粗心,以致於造成社會大眾的不安,以及浪費了龐大的社會成本,在此僅表達最深的歉意。
php 程式連的「資料庫」和 phpMyASdmin 連的「資料庫」不同
那海綿大神猜的就沒錯了
1.謝謝你把原因寫得這麼清楚,很有誠意
2.在所有回答裡選一個對你最有幫助的,點「選為最佳解答」如下圖
確定一下是不是有真的寫進資料庫?
或是硬碟空間已滿寫不進去?
或是你根本沒有INSERT的權限,寫入被拒?
抱歉,我不知道什麼是phpMyASdmin
但我在想是不是commit的問題,因為在某些DB裡,你新增後沒commit的話,可以select的到這筆新資料,又因為沒commit的關係,用網頁select的話會找不到新資料
驗證的方法,就照海綿大的做法,直接把網頁使用的select語法弄出來,先看語法有沒有錯誤,如果沒有錯誤的話,放到phpMyASdmin裡執行,看找不找的到資料(如果原因是這個的話,最佳解給海綿大吧,他的步驟是正確的debug程序)
在 phpMyAdmin 及 php 內執行以下 SQL ,筆數是否一樣
SELECT COUNT(*) FROM list1
A.不一樣 : 寫入失敗或 phpMyASdmin 與 php 的連線主機不一樣
檢查 PHP 程式內的 MySql 連線設定是否正確,localhost 是正確的主機 ?
B.一樣 :
$selectSql = "SELECT * FROM list1 WHERE data_number = '$form_number'";
改成
$selectSql = "SELECT * FROM list1 WHERE TRIM(data_number) = '".TRIM($form_number)."'";
我有一個想法..你試試@@..
$selectSql = "SELECT * FROM list1 WHERE id=1286";
你這樣先試試看有無資料...