我正在尝试从用户输入中使用LIKE
查询检索所有数据并将其与数据库匹配,它可以工作,但只返回一条记录,但我在表中有很多记录。
返回它可以找到的最接近的记录,
所以说例如我有2条记录,其中ItemDesc字段包含字符'The',当我在输入框中搜索'The'并单击submit时,它返回最接近的(最早创建的)记录,当它应该返回时两者。
<?php
$username = "a3355896_guy";
$password = "++++++";
$hostname = "mysql5.000webhost.com";
$dbh = mysql_connect($hostname, $username, $password) or die("Unable to connect to MySQL");
mysql_select_db("a3355896_book") or die("Unable to connect to database");
$ItemDesc = $_POST['ItemDesc'];
$query = "select * from StockItems where ItemDesc LIKE '%$ItemDesc%'";
$result=mysql_query($query);
$num=mysql_num_rows($result);
mysql_close();
?>
抱歉应该包含检索:
<?php
if ($num>0)
{
echo "<center><table border=1><tr><th>Item Code</th><th>Item Desc</th>";
echo "<th>Item Stock Qty</th>";
echo "<th>Item Unit Price</th><th>Item Category</th></tr>";
$ItemCode = mysql_result($result,$i,"ItemCode");
$ItemDesc = mysql_result($result,$i,"ItemDesc");
$ItemStockQty = mysql_result($result,$i,"ItemStockQty");
$ItemUnitPrice = mysql_result($result,$i,"ItemUnitPrice");
$ItemCategory = mysql_result($result,$i,"ItemCategory");
echo "<tr><td>$ItemCode</td><td>$ItemDesc</td><td align=right>";
echo "$ItemStockQty</td>";
echo "<td align=right>$ItemUnitPrice</td>";
echo "<td>$ItemCategory</td></tr>";
echo "</table></center>";
}
else
{
echo "<form name='DeleteStock2'>";
echo "<p> Sorry, $ItemDesc does not exist!<p>";
echo "<input type='button' value='Leave' onclick='history.go(-1)'>";
}
&GT?;
答案 0 :(得分:1)
您实际上并未在此处访问数据 - 您需要迭代结果集。
$setLength = mysql_num_rows($result);
for($i = 0; $i < $setLength; $i++){
//Here, mysql_fetch_assoc automatically grabs the next result row on each iteration
$row = mysql_fetch_assoc($result);
//do stuff with "row"
}
除非您这样做,否则您只是选择不将其包含在您的snippit中。让我们知道:))
- Edit-- 首先,我道歉 - 旧习惯我建议您使用mysql_fetch_assoc而不是mysqli函数集。
尝试使用fetch_assoc或fetch_array函数,它可以解决您的问题。我从来没有使用过你使用的方法,我认为它已被弃用了一段时间。 看看这里: http://php.net/manual/en/mysqli-result.fetch-assoc.php