2014-04-17 4 views
-1

вчера мне потребовалось почти 4 часа, чтобы исправить этот PHP-код .. im новичок в php, поэтому у меня нет опыта, чтобы найти ошибку в этом коде ,Не удалось сохранить данные в базе данных (PHP, MySQL)

не .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-код, i есть формуляр, и это должно передавать данные в мой файл 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> 
+0

Все, что у вас есть для кода, это форма (без JS btw). Где находится SQL? –

+0

И какова ошибка? –

+0

omg i dumbass Я забыл файл php omg sry – Nico

ответ

3

Эта часть является то, что влияет:

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')"); 

Sidenote: Ваш действующий код открыт для SQL injection. Используйте функции mysqli_*. (который я рекомендую вам использовать, и с prepared statements, или PDO)

функции устарели и будут удалены из будущих выпусков PHP.


Поскольку вы только начинаете, чтобы попасть в кодирование:

Вот несколько учебников по подготовленным заявлениям, которые можно изучить и попробовать:

Вот несколько учебников по PDO:

+0

спасибо, я попробую сейчас – Nico

+0

Добро пожаловать @Nico –

+1

спасибо большое, он работает, люблю тебя – Nico

0

НЕ ИСПОЛЬЗОВАТЬ этот код. Это довольно старый. Попробуйте с pdo, как мой, или другой.

Почему вы используете действие sendContact() для javascript? это не php. Вы используете ajax, так? Если нет, вы должны знать, что по клику относится к 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(); 

?> 
+0

sendContact() - это функция js, которую мы использовали до того, как мы включили файл .php, не противоречит ли он .fp-коду? – Nico

+0

Нет, но когда вы отправляете форму, она напрямую вызывает этот файл, action = "whateverthenameis.php". Если это так, вам это не нужно. Но если он выполняет другие действия, вы, очевидно, должны его оставить, :) – qaztype

+0

ОК, так что я должен сделать проверку на php? – Nico

0

Проблема, скорее всего, в этой строке

$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')"); 
Смежные вопросы