Mariuho
Mariuho

Reputation: 7

PHP problem with "insert into" bad query or sth

i've got a PHP lesson and i have to extract records from excel and add it to database but i have a problem that i can't add them because of

ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''pracownicy' ('Id', 'Nazwisko i imię', 'Płeć', 'Dział', 'Wiek', ' at line 1 INSERT INTO 'pracownicy' ('Id', 'Nazwisko i imię', 'Płeć', 'Dział', 'Wiek', 'Miasto', 'Staż pracy') VALUES (DEFAULT, 'Czarnota Mariusz', 'M', 'DZ004', '31', 'KOŁOBRZEG', '8')

I don't know what is the problem, my query in code is all good and everything seems fine.

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Page Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="main.js"></script>
</head>
<body>

    <?php

        $link = mysql_connect('localhost', 'root', 'root') or die("Not connected to database");
        echo 'Połączono z MySQL... <br>';
        $tabela = mysql_select_db('firma', $link) or die ('Not connected to table');
        echo 'Połączono z bazą... <br>';

        $dane = file('dane.csv');
        $tmp = array();

        for($i = 1; $i <= count($dane)-1; $i+=1) {
            $schowek = $dane[$i];
            $schowek = explode(';', $schowek);

            for($j = 0; $j <= count($schowek)-1; $j+=1) {
                $tmp[$j] = trim($schowek[$j]);
                #echo "'" . $tmp[$j] . "'" . "<br>";
            }

            $sql = "INSERT INTO 'pracownicy' ('Id', 'Nazwisko i imię', 'Płeć', 'Dział', 'Wiek', 'Miasto', 'Staż pracy')
            VALUES (DEFAULT, '$tmp[1]', '$tmp[2]', '$tmp[3]', '$tmp[4]', '$tmp[5]', '$tmp[6]')";
            if(mysql_query($sql)) {
                echo "Dodano rekord";
            } else {
                echo "ERROR: " . mysql_error($link) . '<br>' . $sql . "<br><br>";
            }     
        }
    ?>

</body>
</html>

Database:

enter image description here

Upvotes: 0

Views: 140

Answers (3)

calm
calm

Reputation: 400

try:

  1. Removing id parameter from the query
  2. The quotes from the table name
  3. And replacing ' with ` in column names

INSERT INTO pracownicy ('Nazwisko i imię', 'Płeć', 'Dział', 'Wiek', 'Miasto', 'Staż pracy') VALUES ('Czarnota Mariusz', 'M', 'DZ004', '31', 'KOŁOBRZEG', '8');

Upvotes: 0

abhay
abhay

Reputation: 642

Remove single quotes from table name,columns name and remove id parameter also because its an Auto incremented id so no need to send that manually.

 $sql = "INSERT INTO pracownicy (Nazwisko i imię,Płeć,Dział,Wiek,Miasto,Staż pracy)
            VALUES ('$tmp[1]', '$tmp[2]', '$tmp[3]', '$tmp[4]', '$tmp[5]', '$tmp[6]')";

Upvotes: 0

Subhash Patel
Subhash Patel

Reputation: 674

Please see below query and replace with it your SQL query in PHP code.

$sql = "INSERT INTO pracownicy (Nazwisko i imię,Płeć,Dział,Wiek,Miasto,Staż pracy)
            VALUES ('$tmp[1]', '$tmp[2]', '$tmp[3]', '$tmp[4]', '$tmp[5]', '$tmp[6]')";

and code used in PHPmyadmin remove variable put a value like this

$sql = "INSERT INTO pracownicy ('Nazwisko i imię','Płeć','Dział,Wiek','Miasto','Staż pracy')
                VALUES ('tmp1', 'tmp2', 'tmp3', 'tmp4', 'tmp5', 'tmp6')";

Upvotes: 1

Related Questions