PHP:从mysql中检索多个数据,这是一种更为有效的方法吗?

时间:2017-11-09 13:28:11

标签: php mysql database

我有一个关于从mysql数据库检索多行的PHP代码。但我发现它太重了。以下只是一个摘录,因为我对数据库中的每个单词使用相同的方法。你有更好的解决方案吗?我可以为所有页​​面只做一个声明,只需将请求的ID放在正确的位置吗?感谢您的任何帮助。

  <?php
    $dbname = 'xxxx';
    $dbuser = 'xxxx';
    $dbpass = 'xxxx';
    $dbhost = 'localhost';
    $conn = new mysqli($dbhost,$dbuser,$dbpass,$dbname);
    if ($conn->connect_error)
    {
    echo "connection error" ;
    }
    $sql = "SELECT * FROM test WHERE id='1'";
    $result = $conn->query($sql);
    ?>
    <?php
    if ($result->num_rows > 0) {                                        
    while($data = $result-   >fetch_assoc())
    {
    echo $data['FR']."<br>";
    }       
    } else {
    echo "---";
                                        }
    ?>

                 </h3><a href="index.html" title="">FR|</a>
                    <a href="index_en.html" title="">EN|</a>
                    <a href="index_es.html" title="">ES|</a>
                    <a href="index_cn.html" title="">CHI</a>
                 </div>

                    <nav role="navigation" class="main-nav">
                    <ul>
                        <li class="active">
    <a href="index.html" title=""><?  php
    $conn = new mysqli($dbhost,$dbuser,$dbpass,$dbname);
    if ($conn->connect_error)
    {
    echo "connection error" ;
    }
    $sql = "SELECT * FROM test WHERE id='59'";
    $result = $conn->query($sql);

    ?>
    <?php
    if ($result->num_rows > 0) { while($data = $result->fetch_assoc())
    {echo $data['FR']."<br>"; } } else {echo "---"; }?>

    <?php
    $conn = new mysqli($dbhost,$dbuser,$dbpass,$dbname);
    if ($conn->connect_error)
    {
    echo "Problemes de connexion a la base de données " ;
    }
    $sql = "SELECT * FROM test WHERE id='60'";
    $result = $conn->query($sql);    
    ?>
    <?php
    if ($result->num_rows > 0) { while($data = $result->fetch_assoc())
    {echo $data['FR']."<br>"; } } else {echo "---"; }?>    
    <?php
    $conn = new mysqli($dbhost,$dbuser,$dbpass,$dbname);
    if ($conn->connect_error)
    {
    echo "connection error" ;
    }
    $sql = "SELECT * FROM test WHERE id='61'";
    $result = $conn->query($sql);    
    ?>

2 个答案:

答案 0 :(得分:0)

当然可以。

SELECT * FROM `test` WHERE `id` IN (59, 60, 61)

您可以根据需要使用尽可能多的id值填充IN子句,并且每个匹配的ID会在结果中返回一行。

答案 1 :(得分:0)

Ok, Finally i choose Raymond's method, just customizing the code to my mysql version. I will reuse the code wherever i have data in block. Thanks a lot.

enter code here

$sql = "SELECT * FROM test WHERE id IN ('59','60','61')";
$result = $conn->query($sql);


?>
<?php
if ($result->num_rows > 0) { while($data = $result->fetch_assoc())
{echo $data['FR']. "<br>"; }    } else {echo "---"; }?></a></li>