mysql_fetch无法收集数据库中的所有数据

Jer*_*ome 2 php mysql select

我这里有一个代码,用于从数据库中选择所有数据,这是我的代码:

<?php

$name = $_POST['cname'];

if ($_POST["Search"] == "Search") {
    $query = mysql_query("SELECT * FROM parts WHERE cname LIKE '%$name%'");
    if (!empty($query)) {
        $vsi = 'No Data';
        $date = 'No Data';
        $cname = 'No Data';
    }

    while ($row = @mysql_fetch_array($query)) {
        $vsi = $row["vsi"];
        $date = $row["date"];
        $cname = $row["cname"];
    }
Run Code Online (Sandbox Code Playgroud)

这是我如何回应所有变量,

<tr class="gradeC">
<?php echo "<td width='10%'><font size='-2'> $vsi </font></td>" ?>
<?php echo "<td width='20%'><font size='-2'>$date</font></td>" ?>
<?php echo "<td width='20%'><font size='-2'> $cname</font></td>" ?>
</tr>
Run Code Online (Sandbox Code Playgroud)

我的问题是,

我只从每一行得到一个结果,但我在数据库中的数据是5.

这是我的结果

vsi      date             name
123      12/12/2012       test1
Run Code Online (Sandbox Code Playgroud)

但正确的结果应该是:

vsi      date             name
123      12/12/2012       test1
123      12/12/2012       test1
123      12/12/2012       test1
123      12/12/2012       test1
123      12/12/2012       test1
Run Code Online (Sandbox Code Playgroud)

注意,

我使数据库中的所有数据都一样

Dhr*_*tel 8

你必须在while循环中使用TR.

<?php

$name = $_POST['cname'];

if ($_POST["Search"] == "Search") {
    $query = mysql_query("SELECT * FROM parts WHERE cname LIKE '%$name%'");
    if (!empty($query)) {
        $vsi = 'No Data';
        $date = 'No Data';
        $cname = 'No Data';
    }

    while ($row = @mysql_fetch_array($query)) {
        $vsi = $row["vsi"];
        $date = $row["date"];
        $cname = $row["cname"];

?>
<tr class="gradeC">
<?php echo "<td width='10%'><font size='-2'> $vsi </font></td>" ?>
<?php echo "<td width='20%'><font size='-2'>$date</font></td>" ?>
<?php echo "<td width='20%'><font size='-2'> $cname</font></td>" ?>
</tr>
<?
    }

?>
Run Code Online (Sandbox Code Playgroud)

警告

你的代码很容易受到SQL注入,你需要逃避一切get,并post和更好的方法将使用预处理语句

好读

  1. 如何在PHP中防止SQL注入?
  2. PDO准备好的语句是否足以阻止SQL注入?

注意

  1. 整个ext/mysqlPHP扩展,提供所有以前缀mysql_命名的函数,从PHP v5.5.0开始正式弃用,将来会被删除.所以使用PDO或者MySQLi

好读

  1. 不推荐使用mysql扩展,将来会删除它:使用mysqli或PDO代替
  2. MySQL开发人员的PDO教程
  3. Pdo初学者教程

我希望这有帮助.

  • 如果功能不是吗?顺便+1 (2认同)