为什么我的PHP代码不返回任何结果?

为什么我的PHP代码不返回任何结果?,php,mysql,sql,Php,Mysql,Sql,当运行这段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="t

当运行这段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>
我知道注入漏洞,目前这不是问题。现在只需要让它工作

$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语句之前添加此代码

我感觉您的问题是由于您有两个同名的输入元素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>
基于数字输入中的值。然后,它开始做类似的事情

$_POST['HotelVenueRef'] = 5;
$_POST['HotelVenueRef'] = 'HotelVenueRef';
这是你没有注意到的部分!submit按钮也作为表单的一部分提交给PHP,它的值现在覆盖了您感兴趣的值

您没有得到任何结果的原因是您的查询解析为:

SELECT * FROM `B&B` WHERE `Hotel_Venue_ref`='HotelVenueRef'
使用submit按钮的值,而不是数字输入的值


您可以通过删除submit按钮上的name属性来解决问题,这将阻止其值与表单的其余部分一起提交给PHP。您还可以选择重命名“提交”按钮。

首先,尝试将表单标记中的操作设置为代码的正确URL为什么此代码不起作用-您告诉我们-您的SQL代码中存在安全漏洞-SQL注入。使用现代库PDO/mysql、mysqli的参数化来解决这个问题。这将有助于防止SQL语句中的错误,并保护数据库免受注入攻击。类似于$statement=$db->prepare select*fromB&B where Hotel\u vention\u ref=:ref$语句->bindParam:ref,$\u POST['HotelVenueRef',PDO::PARAM\u STR.@halfer-Ah-gee,谢谢!我去拿班卓琴和曼陀林♫ ;-抱歉通过应用程序回复,特别是关于从手机发帖的部分。谢谢修理。顺便说一下,您的第一行代码中的引号不匹配。我感觉您的问题是由于您有两个同名的输入元素HotelVenueRef。-所有这些评论都被忽略了。那些我离开了OP;两次,如果不是三次,那是真的!我在发帖之前没有看完所有的评论。这不是你的错。我只是说;-不过解释得很好。