带有条件检查的 PHP MySQL PDO TextArea Where 子句

标签 php mysql pdo textarea

我有一个页面,如下面的屏幕截图所示。这个想法是输入公交车号码和特定路线上所有站点的列表,每条线路一个。

My Add Route Page

站点已经存储在名为“站点”的数据库表中,我需要文本区域中每个站点的 ID。我当前的代码仅获取文本区域中最后一站的 ID。我觉得我错过了什么。 'busnumber' 是我的文本域,'busroute' 是我的文本域。如果有人能指出我需要更改的内容,以便将每个站点的 ID 作为数组输入到文本区域中,我将不胜感激。感谢您提前抽出时间。

try {
            $conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
            if(isset($_POST["busnumber"]) && isset($_POST["busroute"])){

            $stops = explode(PHP_EOL, $_POST["busroute"]);
            $stopsArray = '"' . implode('","', $stops) . '"';
            $sql = "SELECT * FROM stops WHERE stop_name IN ($stopsArray)";
            echo $sql."</br>";
            $query = $conn->prepare($sql);
            $query->execute();
            $query->setFetchMode(PDO::FETCH_ASSOC);
            $results = $query->fetchAll();
            foreach($results as $result){
            echo $result['stop_id'].' '.$result['stop_name'].'</br>';
            }
            }

} catch (PDOException $pe) {
die("Could not connect to the database $dbname :" . $pe->getMessage());

更新 1 我改了代码如下

$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
        if(isset($_POST["busnumber"], $_POST["busroute"])){

    $stops = explode(PHP_EOL, $_POST["busroute"]);

    foreach($stops as $stop){
        $sql = "SELECT * FROM stops WHERE stop_name = '".$stop."'";
        $statement = $conn->query($sql);
        echo $sql.'</br>';
        $statement->setFetchMode(PDO::FETCH_ASSOC);
        $results = $statement->fetchAll();
        foreach($results as $result){
            echo $result['stop_id'].' '.$result['stop_name'];
        }
        $statement = null;

    }
        }

仍然得到相同的输出,它只给我文本区域内最后一项的 ID The error is still here

最佳答案

我刚刚意识到您上面显示了工作代码。很抱歉之前给出了上面已经存在的答案(如果你愿意,请参阅历史记录)(*哈哈)。在这里,我更新了你的代码(第一个)。我更改了显示结果的部分:

try {
        $conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
        if(isset($_POST["busnumber"]) && isset($_POST["busroute"])){
            $stops = explode(PHP_EOL, $_POST["busroute"]);
            $stopsArray = '"' . implode('","', $stops) . '"';

            $sql = "SELECT * FROM stops WHERE stop_name IN ($stopsArray)";
            $query = $conn->prepare($sql);
            $query->execute();

            if ($query->rowCount() > 0){
                while ($row = $query->fetch(PDO::FETCH_ASSOC)){
                    echo '<br/>'.$row['stop_id'].' '.$row['stop_name'];
                }
            }else{
                echo "No records found...";
            }
        }
} catch (PDOException $pe) {
    die("Could not connect to the database $dbname :" . $pe->getMessage());
}

注意:因为我读过一些教程,使用 while 循环比 fetchAll() 更常规。

关于带有条件检查的 PHP MySQL PDO TextArea Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37560463/

相关文章:

php - 插入批处理数据数组?

php - 通过 PHP mail() 函数发送短信时出现 'From' header 问题

php - sql 如何统计数字

php - 尝试从另一个表获取值 - sql

php - 在 MySQL 数据库中存储 &(&) 的最佳方式

mysql - 优化MySQL表结构。需要建议

php - 如何排列VARCHAR列?

php - 如何在 Swift 中从 PHP 返回 JSON?

php - 数据库异常应该致命吗?

php - PDO 数据库访问 WHERE title = $title