php where 条件判断,PHP MySQL PDO TextArea具有条件检查的Where子句

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

9f35b0f742f55a141f171219b1c03858.png

停靠点已存储在名为“stops”的数据库表中,我需要textarea中每个停靠点的ID.我当前的代码只获取textarea中最后一站的ID.我觉得我错过了什么. ‘busnumber’是我的文本域,’busroute’是我的textarea.如果有人能指出我需要更改的内容,以便将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."";

$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'].'';

}

}

} 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.'';

$statement->setFetchMode(PDO::FETCH_ASSOC);

$results = $statement->fetchAll();

foreach($results as $result){

echo $result['stop_id'].' '.$result['stop_name'];

}

$statement = null;

}

}

并且仍然得到相同的输出,它只给我textarea中最后一项的ID

eb179a4a6f20e511df4a2e51f11edc1c.png

解决方法:

我刚刚意识到你上面显示了工作代码.我很抱歉在上面已经有了答案(看看你想要的历史)(*哈哈).在这里,我更新了你的代码(第一个).我更改了显示结果的部分:

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 '
'.$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

来源: https://codeday.me/bug/20190717/1487995.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值