php ctype_alpha不适用于mysql数据库数据

时间:2017-07-16 02:54:25

标签: php mysql sql

我试图从包含数字的自行车模型列表中筛选出结果,例如:“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"

无法找到错误的地方。我会感激任何帮助。

1 个答案:

答案 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显示对应于"模型"的字符串大小的异常。值。

这真的是每个人的浪费时间。对不起我以前看不到。

感谢所有人的答案和时间。