我试图从包含数字的自行车模型列表中筛选出结果,例如:“BAJAJ CT 100 ALLOY”。在使用ctype_alpha()检查数字的结果之前,我正在使用str_replace删除空格。它似乎不起作用。我完全迷失了。 这是我的PHP代码:
$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 :(得分:1)
我终于找到了问题的原因。数据库表由一个PHP脚本填充,该脚本从Windows操作系统中的.TXT文件读取行并输入"模型" "车辆清单"表
猜猜是什么? 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);
}
var_dump()
数组的简单$bikeListArr
显示对应于"模型"的字符串大小的异常。值。
这真的是每个人的浪费时间。对不起我以前看不到。
感谢所有人的答案和时间。