1

I'm trying to learn how to use databases in PHP.

My main html file creates somewhat like a login form. The data which was used as input there is redirected to the PHP file, where it should be printed and also stored in the database.

<?php error_reporting(E_ALL);

        function db_con($data_array){
            $db = mysqli_connect("localhost", "root", "", "form") or die("Fehler beim Herstellen der Verbindung zur Datenbank!");
            mysqli_set_charset($db, 'utf8');

            mysqli_query($db, "
                INSERT INTO 'data'
                (
                    'E-Mail', 'Name', 'Bewertung', 'Kommentar', 'Thema'
                )
                VALUES
                (
                    '".$data_array['E-Mail']."',
                    '".$data_array['Name']."',
                    '".$data_array['Buchbewertung']."',
                    '".$data_array['Kommentar']."',
                    '".$data_array['Lieblingsthema']."'
                )
            ") or die("Fehler beim Schreiben der Datensätze!");
        }

            if(isset($_POST['name'], $_POST['email'], $_POST['rating'], $_POST['comment'], $_POST['interest'])){
            $data_array = array(
                    "Name" => $_POST['name'],
                    "E-Mail" => $_POST['email'],
                    "Buchbewertung" => $_POST['rating'],
                    "Kommentar" => $_POST['comment'],
                    "Lieblingsthema" => $_POST['interest']
                );

            echo "<th colspan='2'>Folgende Daten wurden übermittelt: </th>";
            echo "<br><br>";

                foreach($data_array as $key => $val){
                    echo "<tr><td><b>". $key. ": ". "</b></td><td>". $val. "</td></tr>";
                }

                db_con($data_array);
            }
        ?>

I don't get why it doesn't work. There is no error, but the script stops after mysqli_query (last output: Fehler beim Schreiben der Datensätze!).

Can someone help me why all those data sets won't be stored in the database and how to fix it?

6
  • Try defining your query as a variable first like $query="INSERT..., then you can execute the query like mysqli_query($db,$query). this also allows you to do something like echo $query; to display the actual query on your page and see if there are any errors with it. Commented Feb 23, 2016 at 21:06
  • Have you checked your error logs? Commented Feb 23, 2016 at 21:06
  • PHPMyAdmin is not a database. It is a web interface for your MySQL database. Commented Feb 23, 2016 at 21:07
  • Add error reporting to the top of your file(s) right after your opening <?php tag error_reporting(E_ALL); ini_set('display_errors', 1); Commented Feb 23, 2016 at 21:07
  • 1
    Your script is at risk for SQL Injection Attacks. Learn about prepared statements for MySQLi. Commented Feb 23, 2016 at 21:07

3 Answers 3

1

Guten Abend Stoger

Biggest problem with arrays is no output and debug Use this:

<pre>
  <?php print_r($_POST); print_r($_GET); ?>
</pre>

This will show you POST and GET values/ Also can use print_r($data_array). Use the pre tags so it formats. First step is to make sure something is in POST. I don;t see a form or where you get your user inputs from. Normally a form asks this and then you assign the POST values to variable

i.e. $name = $_POST['name']);

So add those lines in a php page and then see if array empty or not. Likely it is. If not then you need to see if the fail is mysql insert and you can set some debug there to fail if no insert. I am new but still your layout and detail can't be answered without more. Gruss!

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks for your Answer! I already fixed my problem, the right code was: $sql = "INSERT INTO data(E-Mail,Name,Bewertung,Kommentar,Interesse) VALUES ('$email','$_POST["name"]','$rating','$comment','$interest')"; with setting the variables like shown some answers below.
0
if(isset($_POST['name'], $_POST['email'], $_POST['rating']$_POST['comment'], $_POST['interest'])){

                    $name = $_POST['name']);
                    $email = $_POST(['email']);
                    $rating = $_POST['rating']);
                    $comment = $_POST(['comment']);
                    $interest = $_POST(['interest']);


$sql = "INSERT INTO data ". "(E-Mail, Name, Bewertung, Kommentar, Thema) " . "VALUES('$email', '$name', '$rating', '$comment', '$e', '$interest')";
mysql_select_db('DATABASE NAME');
            $retval = mysql_query($sql, $conn); //$conn for your connection to database

            if(! $retval) {die('Could not enter data: ' . mysql_error());}}
}

2 Comments

Thanks for your code. I put it in mine which got me to at least not having the "error" anymore. But still no data sets are in the database, do you know anything more about it how I could solve that or what the problem could be?
echo the variables to see what you are feeding in database.
0

I think that you don't have correct credentials from 'root', you should try to make the same but with other user of database.

1 Comment

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.