我正在开发一个PHP搜索框,它应该专门用于数据库来查找关键字。当我点击搜索按钮时,虽然唯一改变的是URL,但我已经查看了十几次代码并且似乎无法找到错误。我认为它必须以我的名义" searchSubmitButton",但我已经绝对确保无处不在。我还发现了其他一些拼写错误,但我确定必须有一个我错过的错误。
Here is an imgur that shows what happens正如您可以看到网址更改,但没有其他内容可以打印出来。
编辑:我很抱歉我心不在焉忘记发布我的代码。的index.php
<?php
require("./config.php");
if (isset($_POST['searchSubmitButton'])) { // If the form has been submitted
if (!isset($_POST['searchText']) || empty($_POST['searchText'])) { //If the search text wasn't set
die("<strong>Error:</strong> Search text empty");
} else {
$searchText = $mysql->real_escape_string($_POST['searchText']);
$query = $mysql->query("SELECT * FROM `products` WHERE `product` LIKE '%" . $searchText . "%'");
if ($query->num_rows) { // If at least one row has been returned
print("<h3>Results:</h3>\n");
print("<table id=\"resultsTable\">\n");
print("<th>Item Number</th>\n");
print("<th>Product</th>\n");
print("<th>Price</th>\n");
while ($product = $query->fetch_assoc()) {
print("<tr>\n");
print("<td>" . $product['id'] . "</td>\n");
print("<td>" . $product['product'] . "</td>\n");
print("<td>" . $product['price'] . "</td>\n");
print("</tr>\n");
}
print ("</table>\n");
} else { // If nothing has been returned
print("<h3>Sorry, there were no products matching your search.</h3>\n");
}
}
}
print("<h2>Search Products</h2>\n");
print("<form id=\"searchForm\" action=\"./\" methond=\"post\">\n");
print("<input id=\"searchText\" name\"searchText\" type=\"text\" /><br /><br />\n");
print("<button id=\"searchSubmitButton\" name=\"searchSubmitButton\" type=\"submit\">Search</button>\n");
print("</form>")
?>
的config.php
<?php
$dbHost = "localhost";
$dbUser = "root";
$dbPass = "";
$dbName = "test1";
$mysql = new mysqli($dbHost, $dbUser, $dbPass, $dbName);
if ($mysql->connect_error) {
die("<strong>Error: </strong> (" . $mysql->connect_errno . ")" . $mysql->connect_error);
} else {
print("<strong>Successfully connected to the database.</strong><br /><br />");
}
?>
答案 0 :(得分:1)
导致代码失败的问题包括:
methond=\"post\"
其中包含拼写错误。将其更改为:
method=\"post\"
此外,缺少等号
name\"searchText\"
将其更改为
name=\"searchText\"
您的代码将有效。
旁注:您可能还想将action=\"./\"
更改为action=\"\"
或action=''
,因为您正在执行同一页面中的所有内容。
答案 1 :(得分:0)
我认为您错误地 GET 和 POST 请求。您现在拥有的是 GET 请求,这意味着您通过表单提交的数据将附加到网址。你想要的是一个post请求(数据不会附加到url并直接发送到php页面)。只需在表单标记中将method="get"
更改为method="post"
。
使用代码回答已编辑的问题:您现在使用的代码正在等待 POST 请求,但您的表单正在发送 GET 请求,如说method="post"
添加<form>
,提交表单,php会识别它。
我建议你阅读this tutorial