PHP代码未在表中正确显示输出

时间:2014-04-17 18:09:56

标签: php mysql arrays

<?php
$con=mysqli_connect("localhost","root","","we_love_wildlife");
if (mysqli_connect_errno())
{
  echo "Failed to connect to MySQL: ".mysqli_connect_error();
}

$state = $_POST['state'];
$town = $_POST['town'];
$loc = $town.",".$state;

$sql='select vname from vet where vloc like"%$loc"';
$res=mysqli_query($con,$sql);
echo "<table border='1'>
<tr>
<th>Vet clinic Name</th>
</tr>";

if ($res)
{
    while($row=mysqli_fetch_array($res))
    {
        echo "<tr>";
        echo "<td>" . $row['vname'] . "</td>";
        echo "</tr>";
    }
    echo "<tr><td>Table ends</td></tr>";
    echo "</table>";
}
else
{
    echo "Sorry! No results found with the given specifications!!!";
}
mysqli_close($con);
?>

现在的问题是显示第一个标题行。然后没有别的东西显示出来我添加了Table end line来检查并显示。没有查询是正确的,我有一些行要显示,因为else部分没有被执行。并且在My SQL上执行相同操作会给我2条记录。我的代码中有什么问题???

这是输出:

Vet clinic Name
Table ends

以表格格式

4 个答案:

答案 0 :(得分:1)

此代码:

$row=mysqli_fetch_array($res);
echo $row['vname'];

弹出结果集中的第一条记录。这样只会在结果集中留下一条记录。你应该删除它。

答案 1 :(得分:0)

您的引号是倒退的。而不是

$sql='select vname from vet where vloc like"%$loc"';

你需要

$sql="select vname from vet where vloc like '%$loc'";

您需要字符串的外部上的双引号。在单引号分隔的字符串中,PHP不会处理变量$ loc并将其解释为字符串文字,而不是变量名。来自the manual

  

当用双引号或heredoc指定字符串时,会在其中解析变量。

编辑:我只想补充一点,这类问题很容易调试。如果您回显发送到数据库的查询的值,您会看到它发送的值不正确。实际上,这应该是您的故障排除过程的第一步:echo / var_dump您的变量以确保它们具有预期的值。将其添加到您的问题排查工具箱中。

答案 2 :(得分:0)

好的家伙答案非常简单。查询必须稍微更改一下。它是这样的。

$sql="select * from vet where vloc like '%$loc'";

只是改变了这条线。注意引号。而已。当我看到什么有效时,我甚至无法相信。

答案 3 :(得分:-1)

这是你的问题

$loc = $town.",".$state;

$sql='select vname from vet where vloc like"%$loc"';

LIKE中的子句只接受一个字符串,但你有两个逗号分隔的字符串

将其更改为

$sql='SELECT vname FROM vet WHERE vloc LIKE "%$town" OR "%$state"';
相关问题