看板 Programming
作者 標題 想請問有關PHP和MYSQL的問題
時間 2013年05月04日 Sat. PM 04:29:23
我在寫一段code要讓user在textarea輸入值後,
把每筆input分別到資料庫裡做搜尋再輸出
$line=explode("\n",$_POST['ac']);
$item=count($line);
$i=0;
while($i<$item)
{
if($line[$i]!=null)
{
echo $line[$i]."<br>";
$query= "select interactor_A,matchA,interactor_B,matchB,source_database,publication_identifier,interaction_type,interaction_identifier from full where interactor_A like '%$line[$i]%' or interactor_B like '%$line[$i]%' ";
$result=mysql_query($query);
while($data=mysql_fetch_row($result))
{
echo $data[0]."\t".$data[1]."\t".$data[2]."\t".$data[3]."\t".$data[4]."\t".$data[5]."\t".$data[6]."\t".$data[7]."\t".$data[8]."<br>";
}}
$i++;
}
上面是我的程式碼,我用line來存傳來的input
可是我發現他最後query出來的值都是我輸入裡面最後一筆input的值
比方說我搜尋1,2,3這三筆資料 他只會輸出最後一筆
我測試後發現他只有在for跑到最後一個時才會進入到while裡面跑
想請各位大大幫我解答這是什麼問題><
非常感謝
--
※ 作者: kevin550029 時間: 2013-05-04 16:29:23
※ 看板: Programming 文章推薦值: 0 目前人氣: 0 累積人氣: 716
2樓 時間: 2013-05-06 09:10:49 (台灣)
→
05-06 09:10 TW
1.先把空行濾掉再explode? 2.善用foreach 3.在""中的變數建議用{}括起來 4.輸入要處理過再放進 query
3樓 時間: 2013-05-22 16:13:21 (台灣)
→
05-22 16:13 TW
<?php $line = explode("\n",$_POST['ac']); $item = count($line); $i=0; $resArr = array(); while($i<$item) { if(isset($line[$i])) //請用isset判斷陣列是否有存在 { echo $line[$i]."<br>";$sql = "select interactor_A,matchA,interactor_B,matchB,source_database,publication_identifier,interaction_type,interaction_identifier from full where interactor_A like '%".$line[$i]."%' or interactor_B like '%".$line[$i]."%' "; $query = mysql_query($sql); while($data = mysql_fetch_array($query)) //建議用這個 mysql_fetch_array() { $resArr[$i] = $data; echo $data[0]."\t".$data[1]."\t".$data[2]."\t".$data[3]."\t".$data[4]."\t".$data[5]."\t".$data[6]."\t".$data[7]."\t".$data[8]."<br>"; $data = null; } } $i++; }//$resArr 就是整理好的資料
4樓 時間: 2013-05-22 16:15:15 (台灣)
→
05-22 16:15 TW
補充 : 嚴謹一點的話 , if(isset($line[$i]) && is_numeric(trim($line[$i]))) //請用isset判斷陣列是否有存在,檢查值為數字
回列表(←)
分享