【发布时间】:2016-09-30 08:06:09
【问题描述】:
我有一个页面,如下面的屏幕截图所示。这个想法是输入公共汽车号码和特定路线上所有站点的列表,每条线路一个。
停靠点已经存储在名为“stops”的数据库表中,我需要来自 textarea 的每个停靠点的 ID。我当前的代码仅获取 textarea 中最后一站的 ID。我觉得我错过了什么。 'busnumber' 是我的文本字段,'busroute' 是我的文本区域。如果有人能指出我需要更改哪些内容,以便将在 textarea 中输入的每个站点的 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;
}
}
【问题讨论】:
-
print_r($result)在 foreach 循环中检查它返回的内容!! -
它返回数组([stop_id] => 3 [stop_name] => 16TH ROAD)@Saty
-
表示它只返回一个结果。将您的查询直接运行到 phpmyadmin 并检查您的查询返回了多少行!