基于表单post查询MySQL表


Query MySQL table based on form post

我正在开发一个允许用户进行邮政编码搜索的web表单。我的意图是使用表单post在MySQL表中搜索匹配的邮政编码,然后返回同一行中相关字段的内容。

我可以到达…表单提交并将用户引导到预定的form_post.php页面。如果我在页面上输入<?php echo $_POST["zipcode"]; ?>,它将返回用户提交的内容。

我遵循了以下页面中的PHP/MySQLi示例:

http://www.w3schools.com
/php/php_mysql_connect.asp
/php/php_mysql_select.asp
/php/php_if_else.asp

我可以连接到数据库并返回表中选择的2个值。这是我迄今为止的例子:

<?php
$servername = "localhost";
$username = "db_username";
$password = "db_password";
$dbname = "db_name";
if (isset($_POST['zipcode'])) {
   $zipcode = $_POST['zipcode'];
}
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
$sql = "SELECT zip_code, area FROM zipcode_table WHERE zip_code = $zipcode";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "Result: " . $row["zip_code"]. " " . $row["area"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>

在查询返回相关值后,我想确定"area"返回的值是否是3个值之一,然后将用户转发到适当的url。

我正在编写一个if/else语句,如下所示,然后陷入了困境。

if($result == "A") {
   header("Location: http://example.com/page-1/");
}  
  elseif($result == "B") {
   header("Location: http://example.com/page-2/");
}  
  elseif($result == "C") {
   header("Location: http://example.com/page-3/");
} else {
   header("Location: http://example.com/");
   exit();
}

欢迎提出任何建议。

您在if中使用$result,但没有为其分配区域。因此,首先重新设置空间:

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "Result: " . $row["zip_code"]. " " . $row["area"]. "<br>";
    }
} else {
    echo "0 results";
}

这个:

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "Result: " . $row["zip_code"]. " " . $row["area"]. "<br>";
        $result = $row["area"];
        break;
    }
} else {
    echo "0 results";
    $result = "";
}

然后替换查询:

$sql = "SELECT zip_code, area FROM zipcode_table WHERE zip_code = $zipcode";

这个:

$sql = "SELECT zip_code, area FROM zipcode_table WHERE zip_code = '$zipcode'";

那么你的问题就会得到解决。