大家好我即时学习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> </p>
<input type="submit" value="Submit">
</form>
<p> </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>";
}
?>
答案 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 statements或PDO with prepared statements。
答案 1 :(得分:1)
检查您的SQL语法 - 看起来应该是:
WHERE FirstName = '$firstname' AND LastName = '$lastname'