<?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
以表格格式
答案 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:
编辑:我只想补充一点,这类问题很容易调试。如果您回显发送到数据库的查询的值,您会看到它发送的值不正确。实际上,这应该是您的故障排除过程的第一步:echo / var_dump您的变量以确保它们具有预期的值。将其添加到您的问题排查工具箱中。当用双引号或heredoc指定字符串时,会在其中解析变量。
答案 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"';