运行此PHP代码时,它可以正常运行,但不会返回任何结果 - 任何人都可以告诉我为什么请这样做?我已经尝试检查代码,但是因为它运行起来并不那么明显。所以我认为它在回显SQL语句时有问题。
<!doctype html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Bed & Breakfast</title>
<style type = "text/css">
</style>
</head>
<body>
<form style = "text-align:center; margin-top:200px;"method="POST" action ="">
<span> Hotel Venue<span><input style ="margin-left:20px;" type="number" Name ="HotelVenueRef"/><br/><br/><br/>
<input style = "margin-left:100px;" type='submit' value='HotelVenueRef' Name ="HotelVenueRef"/>
</form>
<?php
if (isset($_POST['HotelVenueRef']))
{
require_once 'connecttodatabase.php';
$sql=" select * from`B&B` where Hotel_Venue_ref =" .$_POST['HotelVenueRef'];
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result))
{
echo'
<td align="center">'.$row['Delegate_Student_uid'] .' </td>';
echo'
<td align="center">'.$row['Name'] .' </td>';
echo'
<td align="center">'.$row['Event_uid'] .' </td>';
echo'
<td align="center">'.$row['Hotel_Venue_ref'] .' </td>';
}
}
?>
</body>
</head>
我知道注射漏洞,目前不是问题。现在只需要让它工作。
答案 0 :(得分:2)
$sql=" select * from `B&B` where Hotel_Venue_ref = '" . mysql_escape_string($_POST['HotelVenueRef']) . "'");
$result = mysql_query($sql);
$result = mysql_query($sql);
if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}
在while语句
之前添加此代码答案 1 :(得分:2)
我觉得您的问题是由于您有2个具有相同名称的输入元素(HotelVenueRef)。
这是您的表单,我已经清理了格式并取出了一些样式属性,因为它们与问题无关,没有它们就更清晰。我还低调了所有属性名称(因为一致性是关键!!)
<form "method="POST" action ="">
<span>Hotel Venue<span>
<input type="number" name="HotelVenueRef"/>
<br/>
<br/>
<br/>
<input type="submit" value="HotelVenueRef" name="HotelVenueRef"/>
</form>
问题是您同时拥有<input type="number"/>
和 <input type="submit"/>
同名。
当表单提交给PHP时,$_POST
数组将填充键值对,其中键基于html输入元素的name
属性,值为值那个输入。
我们假设您将数字输入设置为值为5,然后提交表单。
PHP现在将自动生成$_POST
数组。在幕后,它有点像
$_POST['HotelVenueRef'] = 5;
基于数字输入的值。然后它去做并做类似
的事情$_POST['HotelVenueRef'] = 'HotelVenueRef';
这是你没有注意到的部分!提交按钮也作为表单的一部分提交给PHP,其值现在会覆盖您感兴趣的值。
您未获得任何结果的原因是您的查询结果如下:
SELECT * FROM `B&B` WHERE `Hotel_Venue_ref`='HotelVenueRef'
使用提交按钮的值,而不是输入数字的值。
您可以通过删除&#34; name&#34;来解决您的问题。提交按钮上的属性,这将阻止其值与表单的其余部分一起提交给PHP。您还可以选择重命名提交按钮。