需要帮助使用PHP查询数据库

时间:2014-10-19 01:22:25

标签: php html

大家好我即时学习php,刚开始今天。我第一次在雅虎网络托管和学习数据库。我能够将firstName和LastName发布到mysql数据库中。但现在我希望能够查询名称并能够显示我搜索的名称。我的php文件无法正常工作,因为我无法在数据库中找到该名称。我需要帮助,谢谢  以下是我的代码:

<htmL>
<body>
 <p><strong>Query database</strong></p>
<form name="form1" method="post" action="backendfile2.php">
<label><br>
  <br>
 First Name
 <input type="text" name="firstname" id="firstname">
 </label>
  <p>
<label>Last Name
 <input type="text" name="lastname" id="lastname">
  </label>
  </p>
 <p>&nbsp;</p>
 <input type="submit" value="Submit">  
 </form>
  <p>&nbsp;</p>
  </body>
  </html>

php文件:

   <?php
   $con=mysqli_connect("mysql","username","password","207_lab");
 // Check connection
   if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
   }
    $firstname = mysqli_real_escape_string($con,$_POST['firstname']);
    $lastname = mysqli_real_escape_string($con,$_POST['lastname']);
     $result = mysqli_query($con,"SELECT FirstName, LastName FROM User WHERE 
      FirstName = $firstname, LastName = $lastname");

       echo "Name searched = ";
       while($row = mysqli_fetch_array($result)) {
       echo $row['FirstName'] . " " . $row['LastName'];
    echo "<br>";
        }
         ?>

2 个答案:

答案 0 :(得分:3)

根据您的originally posted code/question,因为您已进行了修改。


在变量周围使用引号,因为它们是字符串。

FirstName = '$firstname', LastName = '$lastname'

使用

检查错误

or die(mysqli_error($con))mysqli_query()会触发它。

您还需要从POST分配它。

$firstname = mysqli_real_escape_string($con,$_POST['firstname']);
$lastname = mysqli_real_escape_string($con,$_POST['lastname']);

WHERE 
  FirstName = $firstname, LastName = $lastname"

to,使用AND而不是逗号

WHERE 
  FirstName = '$firstname' AND LastName = '$lastname'"

逗号就是您使用UPDATE table SET column_x = 'var_1', column_y = 'var_2'

的时候

随后,您可以将AND替换为OR,具体取决于查询的标准。

error reporting添加到文件的顶部,这会为这两个变量提供Undefined index...警告。

error_reporting(E_ALL);
ini_set('display_errors', 1);

旁注:错误报告应仅在暂存时完成,而不是生产。

,您现在的方法向SQL injection开放。使用prepared statementsPDO with prepared statements

答案 1 :(得分:1)

检查您的SQL语法 - 看起来应该是:

WHERE FirstName = '$firstname' AND LastName = '$lastname'