下面的代码是我从w3 schools website那里得到的,并对其进行了一些修改,但是无论我单击搜索按钮时如何,我只会打印第一行,而没有其他内容。如果成功连接到我的数据库,它甚至不会打印。
我使用chrome的dev工具检查我的网络流量,可以看到我的POST请求已成功完成:
名称:巴哈马提交:搜索
我在mysql实例上同时启用了错误日志记录和常规日志记录,并为巴哈马群岛做了grep,没有成功。因此,这似乎表明该脚本甚至没有查询我的数据库?
IE,这就是我得到的:https://imgur.com/a/PHKBmbU
<?php echo("PHP Search Page Loaded Successfully");
if(isset($_POST['submit'])){
if(preg_match("^/[A-Za-z]+/", $_POST['name'])){
$servername = "localhost";
$username = "test";
$password = "test";
$dbname = "test";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} else {
echo("We are not dead");
}
$sql = "SELECT boatname, date, price FROM liveaboards";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo("<br> boatname: ". $row["boatname"]. " - date: ". $row["date"]. " " . $row["price"] . "<br>");
}
} else {
echo(" 0 results");
}
$conn->close();
}
}else{
echo("<p>Please enter a search query</p>");
}
?>
按照W3学校的主题(我最喜欢的资源之一),这是清除数据的正确方法:https://www.w3schools.com/php/php_filter.asp
应用于您的代码:
<?php echo("PHP Search Page Loaded Successfully");
// test variables.
$_POST['submit'] = true;
$_POST['name'] = "bahamas";
if(isset($_POST['submit'])){
$_POST['name'] = filter_var($_POST['name'], FILTER_SANITIZE_STRING);
$servername = "localhost";
$username = "test";
$password = "test";
$dbname = "test";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} else {
echo("We are not dead");
}
$sql = "SELECT boatname, date, price FROM liveaboards";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo("<br> boatname: ". $row["boatname"]. " - date: ". $row["date"]. " " . $row["price"] . "<br>");
}
} else {
echo(" 0 results");
}
$conn->close();
}else{
echo("<p>Please enter a search query</p>");
}
?>
根据您的POST结果,您收到name: bahamas submit: Search
,如果是,则更正此内容
if(isset($_POST['submit'])){
TO
if(isset($_POST['search'])){