【问题标题】:Can't store data in Database(PHP, MySQL)无法将数据存储在数据库中(PHP、MySQL)
【发布时间】:2014-06-01 17:52:21
【问题描述】:

昨天我花了将近 4 个小时来修复这个 php 代码。我是 php 的初学者,所以我没有找到这个代码中的错误的经验。

.php 没有错误,我也在开头写了这两行:

error_reporting(E_ALL | E_STRICT);´
ini_set('display_errors', TRUE);



这是我的 php 代码:

//Variablen zuweisen
$name = filter_input(INPUT_POST, 'name');
$email = filter_input(INPUT_POST, 'email');
$betreff = filter_input(INPUT_POST, 'betreff');
$message = filter_input(INPUT_POST, 'message');

/*if (($vorname == "") OR ($nachname == "") OR($email == "")) {
        echo "Fehler: Eintrag unvollständig.";
        die; 
}*/

    //Verbindung herstellen
    $datenbank = mysql_connect("*******", "****", "*****") or die ("Verbindung fehlgeschlagen: ".mysql_error());
    $verbunden = mysql_select_db("4109932db1") or die ("Datenbank nicht gefunden oder fehlerhaft");

    //Daten in DB speichern
    $sql_befehl = mysql_query("INSERT INTO Contact_Requests (Name,Mail,Betreff,Message) VALUES ($name, $email, $betreff, $message");

    if($sql_befehl)
    { echo "Ihr Eintrag wurde hinzugefügt."; }

    //Verbindung beenden
    mysql_close($datenbank);

这是我的 html 代码,我有一个公式,它应该将数据发送到我的 php 文件 (insert.php)

<form method="post" action="insert.php">
                <table>
                    <tr>
                        <td>Name:*</td><td><input type="text" value="Name" id="name" onfocus="nameDel();" onblur="nameSet();" name="name" ></td>
                    </tr>
                    <tr>
                        <td>E-Mail:*</td><td><input type="email" value="E-Mail" id="email" onfocus="emailDel();" onblur="emailSet();" name="email"></td>
                    </tr>
                    <tr>
                        <td>Betreff:*</td><td><input type="text" value="Grund der Nachricht" id="regard" onfocus="regardDel();" onblur="regardSet();" name="betreff"></td>
                    </tr>
                </table>
                <p>
                    Nachricht:*<br><textarea cols="50" rows="10" id="msg" onfocus="msgDel();" onblur="msgSet();" name="message">Deine Nachricht</textarea>
                </p>    
                <p>
                    <input type="submit" value="Senden" id="send" onclick="sendContact();">
                </p>
            </form>

【问题讨论】:

  • 你所拥有的所有代码都是一个表单(没有 JS 顺便说一句)。 SQL 在哪里?
  • 错误是什么?
  • omg 我笨蛋我忘记了 php 文件 omg sry
  • 也分享您的插入查询脚本...?
  • 所以现在我也发布了 php 脚本,问题是数据不会存储在数据库中

标签: php mysql database phpmyadmin store


【解决方案1】:

不要使用该代码。它很旧了。尝试使用我的 pdo 或其他。

为什么要在 javascript 上使用 sendContact() 操作?那不是PHP。你在用ajax,所以?如果不是,你一定知道on click是指js而不是php。

我不知道您做了什么,但这里有一个 PHP 代码示例,您可以使用它来将数据插入数据库。

<?php /*insert.php*/
try {
$database_connection = new PDO('mysql:host='. $dbhost .';dbname='. $dbname . ';charset=utf8', $dbuser, DB_PASS);
}   catch (PDOException $e) {
                echo $e->getMessage();
}

$database_connection->prepare("INSERT into db_name (add, ghj, qwe) VALUES (:value1, :value2, :value3"); //and so on

$database_connection->bind(":value1", $value, PDO::PARAM_vartype); //vartype is the variable type (integer-int...)

/做其余的值/

$database_connection->execute();

?>

【讨论】:

  • sendContact()是我们在包含.php文件之前使用的js函数,它与.php代码冲突吗?
  • 不,但是当您提交表单时,它会直接调用该文件,action="whateverthenameis.php"。如果是为了那个,你不需要它。但如果它执行其他操作,你显然必须离开它,:)
  • 我写的内容在您的数据中很好。 :)
【解决方案2】:

这部分是受影响的:

VALUES ($name, $email, $betreff, $message")

变量需要用引号括起来:

VALUES ('$name', '$email', '$betreff', '$message')

你最后的双引号不在正确的位置,因为你忘记了一个右括号)

(Name,Mail,Betreff,Message) VALUES ($name, $email, $betreff, $message");
                                                                     ^

应该是

VALUES ('$name', '$email', '$betreff', '$message')");

受影响的行现在应该如下所示:

$sql_befehl = mysql_query("INSERT INTO Contact_Requests (Name,Mail,Betreff,Message) VALUES ('$name', '$email', '$betreff', '$message')");

旁注:您当前的代码对SQL injection 开放。使用mysqli_* 函数。 (我建议你使用 prepared statementsPDO

mysql_* 函数已弃用,将从未来的 PHP 版本中删除。


因为你刚刚开始接触编码:

这里有一些关于准备好的语句的教程,您可以学习和尝试:

这里有一些关于 PDO 的教程:

【讨论】:

  • 太好了,很高兴我能帮助@Nico Cheers!
  • 您发布的教程是关于 mysqli_* 还是? mysqli_* 语法和mysql_* 语法不一样还是?
  • 是的mysqli_* 和其他是 PDO 就在它之下。 mysqli 是 MySQL 的更新版本。如果要使用它,则不能将mysqli_*mysql_* 混合使用,并且某些数据库连接参数的使用方式略有不同。 @尼科
  • 好的,谢谢!你能简单地说一下PDO是什么吗? :)
  • 不客气@Nico 简而言之“PDO - PHP 数据对象 - 是一个数据库访问层,提供访问多个数据库的统一方法。” 摘自此页面code.tutsplus.com/tutorials/… 另外,这个页面stackoverflow.com/q/2190737 会更好地解释它。也可以在 PHP.net 上查看 php.net/manual/en/intro.pdo.php
【解决方案3】:

问题很可能出在这一行

$sql_befehl = mysql_query("INSERT INTO Contact_Requests (Name,Mail,Betreff,Message) VALUES ($name, $email, $betreff, $message");

应该是

$sql_befehl = mysql_query("INSERT INTO Contact_Requests (Name,Mail,Betreff,Message) VALUES ('$name', '$email', '$betreff', '$message')");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多