Php 为什么我的网站无法上传到我的数据库(使用MySQLI),然后又无法重定向我?

Php 为什么我的网站无法上传到我的数据库(使用MySQLI),然后又无法重定向我?,php,Php,我为这个问题绞尽脑汁已经有一段时间了,但还没有找到问题所在。我有一个表单(在index.php中),在按下submit按钮后将用户输入上传到数据库。正如预期的那样,在按下submit之后,我被重定向到add_records.php,但随后我就被卡住了,尽管包含了这行代码 header("location: index.php") 如果我注释掉所有mysqli代码,重定向工作正常,因此我得出结论,错误与mysqli有关,并上传到数据库(可能是我错误地处理了地理数据)。我已经做了所有平常的事情-检

我为这个问题绞尽脑汁已经有一段时间了,但还没有找到问题所在。我有一个表单(在index.php中),在按下submit按钮后将用户输入上传到数据库。正如预期的那样,在按下submit之后,我被重定向到add_records.php,但随后我就被卡住了,尽管包含了这行代码

header("location: index.php")
如果我注释掉所有mysqli代码,重定向工作正常,因此我得出结论,错误与mysqli有关,并上传到数据库(可能是我错误地处理了地理数据)。我已经做了所有平常的事情-检查了错误日志,检查了PHPMyAdmin上的任何错误,但都没有显示任何错误!我显示了下面的代码以帮助进行故障排除,所有敏感信息都替换为“#”(注意-我已经多次检查了数据库密码等,它们都是正确的)

index.php:

<?php
// Initialize the session
session_start();

// Check if the user is logged in, if not then redirect him to login page
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
    header("location: ##/records/login.php");
    exit;
}

echo file_get_contents("##/code/header.php");
?>
<div class="page-header">
    <h1>Hi, <b><?php echo htmlspecialchars($_SESSION["username"]); ?></b>. Welcome to our site.</h1>
</div>
<form action="##/records/add_records.php" method="POST">
    <input type="text" name="species" placeholder="Species">
    <br>
    <input type="date" name="date" placeholder="Date">
    <br>
    <input type="time" name="time" placeholder="Time">
    <br>
    <input type="location" name="location" placeholder="Location Name">
    <br>
    <input type="text" name="lat/long" placeholder="Lat Long">
    <br>
    <input type="number" name="count" placeholder="Count">
    <br>
    <input type="text" name="county" placeholder="County (default Norfolk)">
    <br>
    <input type="text" name="country" placeholder="Country (default United Kingdom)">
    <br>
    <input type="text" name="notes" placeholder="Notes">
    <br>
    <button type="submit" name="submit">Submit</button>
</form>

<p>
    <a href="##/records/logout.php" class="btn btn-danger">Sign Out of Your Account</a>
</p>
<?php echo file_get_contents("##/code/footer.php"); ?>

你好欢迎来到我们的网站。









提交

添加_records.php:

<?php include_once '##/records/config_bird_records.php';

    $species = mysqli_real_escape_string($conn, $_POST['species']);
    $date = mysqli_real_escape_string($conn, $_POST['date']);
    $time = mysqli_real_escape_string($conn, $_POST['time']);
    $location = mysqli_real_escape_string($conn, $_POST['location']);
    $latlong = mysqli_real_escape_string($conn, $_POST['latlong']);
    $count = mysqli_real_escape_string($conn, $_POST['count']);
    $county = mysqli_real_escape_string($conn, $_POST['county']);
    $country = mysqli_real_escape_string($conn, $_POST['country']);
    $notes = mysqli_real_escape_string($conn, $_POST['notes']);

    $sql = "INSERT INTO bird_db (Species, Date, Time, Location, Lat/Long, Count, County, Country, Notes) VALUES ('$species', $date, $time, '$location', geography::STGeomFromText('POINT($latlong)', 4326), $count, '$county', '$country', '$notes')";

    mysqli_query($conn, $sql);
    mysqli_close($conn);

    header("location: ##/records/index.php")
?>
<?php
/* Database credentials.*/
define('DB_SERVER', '##');
define('DB_USERNAME', '##');
define('DB_PASSWORD', '##');
define('DB_NAME', '##');

/* Attempt to connect to MySQL database */
$conn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);

// Check connection
if($conn === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
?>

将任何输出发送到浏览器之前,请先使用
标题
方法


您的代码在成功和错误情况下都包含输出,这意味着重定向将永远无法工作。如果删除
echo“已成功添加的记录”它应该可以工作。

您可以使用javascript,而不是header()进行重定向;作用 请尝试以下操作:

echo "<script type='text/javascript'>alert('Upload Successful');
            window.location='redirected_page.php';
            </script>";
echo”警报(“上传成功”);
window.location='redirected_page.php';
";

至于上传失败,你有没有在谷歌上搜索mysqli_real_escape_string的工作原理,因为它会影响变量中的一些特殊字符

你有没有尝试在成功查询时使用header?标题尚未发送?请学习如何使用prepare stmt(Sql Inject)我完全删除了if-else语句,但仍然存在相同的问题:(我承认,我根本不是PHP专家,所以可能我错过了一些简单的东西。请在问题中发布更新后的代码。在我现在更新原始帖子中的代码之前,add_records.PHP中是否有空格。此外,我刚刚检查过,在问题之前没有空格。您发布的新代码不会在da中插入任何内容tabase.当你运行这个代码时会发生什么?你在浏览器中看到了什么?哎呀,我现在又更新了代码!虽然很有趣,但我仍然遇到了同样的问题,即使在删除了将数据插入数据库的代码之后。这个问题一定在文件的其他地方。谢谢你的帮助。使用javasc有什么好处你是说?