PHP没有将数据保存到数据库

时间:2014-03-17 20:51:11

标签: php mysql database localhost

我觉得我越来越接近弄清楚为什么PHP 没有将数据保存到我的数据库。 我尝试过从众多教程中学习PHP和MySQL,但都失败了。

所以...我觉得在尝试连接MySQL数据库时可能还有一些我没有指定的东西。

在最近的一个教程中,只是简单地将输入中的文本输出到MySQL中的表,我得到一个错误,指出找不到服务器“localhost”。 我的Apache已经安装在端口60上(不是默认端口80)。所以我认为这可能是问题所在。我尝试将localhost:60添加到mysqli_connect而不是localhost本身,错误消失了!

但仍然存在一个问题: 1.加载demo.php页面需要花费很长时间(请参阅下面的代码)。 2.数据未添加....

这是代码(我将其从视频上的原始MySQL转换为MySQLi并添加了注释):

demo.php:

   <?php

    define('DB_NAME', 'forms1');
    define('DB_USER', 'root');
    define('DB_PASSWORD', '');
    define('DB_HOST', 'localhost:60');

    // stored in a variable to TEST if it's working
    $link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_HOST);

    // TEST if a link has been established (connection)
    if (!$link) {
        die('Could not connect:' . mysqli_error($link));
    }
    // same as above
    $db_selected = mysqli_select_db($link,DB_NAME);

    if(!$db_selected) {
        die('Can\t use ' . DB_NAME . ': ' . mysqli_error($link));
    }
    // Check SUCCESS with commented command below
    // echo 'Connected successfully.';

    // stored in a variable to shorten
    $value = $_POST['input1'];

    // stored in a variable to TEST
    $sql = "INSERT INTO demo (input1) VALUES ('$value')"; 

    if(!mysqli_query($link, $sql)) {
        die('Error: ' . mysqli_error($link));
    }

    mysqli_close($link);
?>

演示form.php的:

<form action="demo.php" method="post" />
<p>Input 1: <input type="text" name="input1" /></p>
<input type="submit" value="Submit" />
</form>

我还有同样的问题和另一个代码,请看这里的主题: PHP database won't save data

真的希望有人可以在这里帮助我。 遗憾的是,我还没有完成工作的基础......

谢谢!

2 个答案:

答案 0 :(得分:1)

尝试一下:(您现有的代码对我不起作用)HTML表单和PHP / SQL是一体化的。

<?php
DEFINE ('DB_USER', 'xxx');
DEFINE ('DB_PASSWORD', 'xxx');  
DEFINE ('DB_HOST', 'xxx');
DEFINE ('DB_NAME', 'xxx');

$link = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) 
OR die("could not connect");

if(isset($_POST['submit'])){

    // stored in a variable to shorten
    $value = mysqli_real_escape_string($link,$_POST['input1']);

    // stored in a variable to TEST
    $sql = "INSERT INTO demo (input1) VALUES ('$value')"; 

    if(!mysqli_query($link, $sql)) {
        die('Error: ' . mysqli_error($link));
    }

    else { echo "Success"; }

} // if(isset($_POST['submit']))

    mysqli_close($link);
?>

<form action="" method="post" />
<p>Input 1: <input type="text" name="input1" /></p>
<input type="submit" name="submit" value="Submit" />
</form>

答案 1 :(得分:0)

MySQL使用端口3306作为默认值。 PHP直接连接到数据库吗?如果是,请尝试使您的端口匹配。

您是否添加了MySQL权限以允许您的应用连接数据库并与之交互?您应该阅读有关GRANT和权限的信息。

但Dagon上面的评论是一个严肃的问题:只有当你愿意将数据窃取,删除或两者兼顾时,才能将数据库直接暴露给互联网。