使用php从mysql中用逗号分隔搜索多行

时间:2016-07-30 06:16:51

标签: php mysql forms explode implode

这是一个像DHL这样的跟踪系统。使用php表格从MySQL数据库跟踪货件编号。 但我需要它使用php从mysql中用逗号分隔搜索多行。 enter image description here

<?php 
      $ship=$_POST['Consignment'];
      $cons = explode(',',$ship);
?>

<?php
    $sql = "SELECT * FROM tbl_courier WHERE cons_no = '$cons[]'";
    $result = dbQuery($sql);
    $no = dbNumRows($result);
    if($no == 1){
    while($data = dbFetchAssoc($result)) {      
    extract($data);
?>

 Shipment Name: <?php echo $ship_name; ?>
 Shipment Phone: <?php echo $phone; ?>

 <?php }//while
        }//if
         else {
         echo 'In else....';
 ?>
    Consignment Number not found.Search Again.

    <?php 
                }//else
    ?>

所以我需要我的搜索将使用逗号分隔(,)。 谢谢你的帮助。

5 个答案:

答案 0 :(得分:2)

在这种情况下你可以使用IN运算符。

<?php 
      $ship=$_POST['Consignment'];

?>

<?php
    $sql = "SELECT * FROM tbl_courier WHERE cons_no IN(".$ship.")";
    $result = dbQuery($sql);
    $no = dbNumRows($result);
    if($no == 1){
    while($data = dbFetchAssoc($result)) {      
    extract($data);
?>

希望它对你有所帮助。

答案 1 :(得分:1)

更改您在选择查询中写入'$ cons []'的SQL查询,这是错误的。爆炸后你会得到1,2,3的数据所以你只需要在查询而不是数组和用户IN运算符中写这样的变量。

 `$sql = "SELECT * FROM tbl_courier WHERE cons_no IN(".$ship.")";`

答案 2 :(得分:1)

POST查询中使用MySql数据之前,您应始终准备/清理<?php if (isset[$_POST['Consignment']] && !empty($_POST['Consignment'])) { $ship = $_POST['Consignment']; $cons = explode(',', $ship); $cons = array_filter($cons, function($v){ return trim(strip_tags($v)); }); $cons = '"' . implode('","', $cons) . '"'; $sql = "SELECT * FROM tbl_courier WHERE cons_no IN ($cons)"; $result = dbQuery($sql); $no = dbNumRows($result); if ($no == 1) { while ($data = dbFetchAssoc($result)) { extract($data); .... } .... } ?> 数据:

activity

答案 3 :(得分:0)

请使用“在设置中查找”

SELECT * FROM tbl_courier WHERE FIND_IN_SET(cons_no,'$ship')

更新

Applications/PyCharm.app/Contents/helpers/pycharm/utrunner.py 

注意: - $ ship逗号分隔值不是数组

答案 4 :(得分:0)

我找到了答案:

if(isset($_POST['Consignment'])){

    $ship=$_POST['Consignment'];
    $shipment= explode(',',$_POST['Consignment']);

$ship = implode("', '",$shipment) ;
$query = "SELECT * FROM `tbl_courier` WHERE `cons_no` IN('$ship')";

$results = $mysqli->query($query);

if($results){
print '<table border="1">';
while($row = $results->fetch_assoc()) {
    print '<tr>';
    print '<td>'.$row["cons_no"].'</td>';
    print '<td>'.$row["customerName"].'</td>';
    print '<td>'.$row["customerPhone"].'</td>';
    print '</tr>';
}  
print '</table>';

// Frees the memory associated with a result
$results->free();
}
else {
    echo "Query Not Match";
}
$mysqli->close();
}

感谢回答。