2017-07-16 36 views
1

我試圖從包含數字的自行車模型列表中篩選出結果,例如:「BAJAJ CT 100 ALLOY」。在使用ctype_alpha()檢查數字結果之前,我正在使用str_replace刪除空格。它似乎沒有工作。我完全迷失了。 這裏是我的PHP代碼:php ctype_alpha不適用於MySQL數據庫數據

$query="SELECT * FROM vehicleList WHERE 1;"; 
$result=mysqli_query($db,$query); 
if(mysqli_num_rows($result) != 0) { 
    $bikeListArr = array(); 
    $carListArr = array(); 
    while($row=mysqli_fetch_array($result)) { 
     if($row["type"] == "bike") { 
      // echo str_replace(' ','',$row["model"]) . "\n"; 
      if(ctype_alpha(str_replace(' ','',$row["model"]))) { 
       array_push($bikeListArr,$row["id"],$row["model"],$row["category"]); 
      } 
      else echo $row["model"] . " -- DROPPED\n"; 
     } else { 
      array_push($carListArr,$row["id"],$row["model"],$row["category"]); 
     } 
    } 
    // print_r($bikeListArr); 
} 

這裏是輸出的一部分:

HERO HF DAWN KICKSTART -- DROPPED 
HERO HF DELUXE -- DROPPED 
HONDA DREAM NEO -- DROPPED 
BAJAJ PLATINA -- DROPPED 
HERO SPLENDOUR -- DROPPED 

有趣的是下面傳遞的值:

"TVS STAR CITY PLUS","HERO PASSION X PRO","HERO GLAMOUR","HERO HUNK" 

不能找到什麼是錯的。我會很感激任何幫助。

+0

是你的選擇語句正確,爲什麼你在結尾添加了分號? –

+0

爲什麼不使用['preg_match'](http://php.net/manual/en/function.preg-match.php),如'preg_match('/ \ d /',$ row ['model'], $ m,PREG_OFFSET_CAPTURE)'? – tadman

+0

@ Amr Aly:是的。我一直使用「;」最後。很可能它是從我以前的工作片段中複製而來的。 :-) – atf

回答

1

我終於找到了問題的原因。數據庫表由PHP腳本填充,該腳本從Windows操作系統中的.TXT文件中讀取行,並提供「vehiclelist」表的「模型」列。

猜猜是什麼? Windows操作系統中的記事本需要\r\n來表示換行符。 (來源:Windows notepad not supporting newline character '\n')。 PHP只識別\n字符作爲換行符,因此\r字符留在大多數行的末尾(仍然沒有找到爲什麼所有行都沒有它)。在表的所有行上都有一個簡單的更新trim()做了這項工作,現在代碼工作正常。歡呼!!

代碼段來更新表:

$db=mysqli_connect("127.0.0.1","root","","mdb") or die("DB Timeout... Please try again"); 
$query="SELECT * FROM vehiclelist WHERE 1;"; 
$result=mysqli_query($db,$query); 
while($row=mysqli_fetch_array($result)) { 
    $query1="UPDATE vehiclelist SET model=\"" . trim($row["model"]) . "\" WHERE id=\"" . $row["id"] . "\";"; 
    $result1=mysqli_query($db,$query1); 
} 

$bikeListArr陣列的簡單var_dump()顯示該異常對應於「模型」值串的尺寸。

這真是浪費大家的時間。對不起,我以前看不到。

感謝所有的答案和時間。