MySql вставити запит не працює в PHP?

<?php
            $con = mysql_connect("localhost:3306","root","");
            try
            {
                if (!$con)
                 {
                     die('Could not connect to MySql Server : ' . mysql_error());
                }

                $db_found = mysql_select_db("registerdb");  

                if ($db_found) 
                {
                    print "Database Found";
                }
                else 
                {
                    print "Database NOT Found";
                }
                mysql_query("INSERT INTO register VALUES ('$_POST[Field2]','$_POST[Field4]','$_POST[Field7]','$_POST[Field8]','$_POST[Field9]','$_POST[Field13]','$_POST[Field14]','$_POST[Field15]')");

                mysql_close($con);
            }
            catch(Exception $e)
            {
                echo 'Message: ' .$e->getMessage();
            }
?>

Я не отримую жодної помилки під час виконання програми, виберіть запит, що працює належним чином для однієї бази даних. Ось визначення таблиці для реєстру

 Name          Type           Null      Key
 id       bigint(10)      NO        PRI     auto_increment
sname     varchar(20)     NO             
dob       date  YES       NULL   
email     varchar(30)     NO             
gender    varchar(7)      NO             
mobile    int(10)     YES            
country       varchar(15)     NO             
state     varchar(15)     YES            
city      varchar(15)     YES 

Я не отримую ніякої sysntax помилки в PHP.

Вибачте за свої помилки, я редагував його.

1
Вам не вистачає ' на останньому значенні ' $ _POST [Field15]
додано Автор asprin, джерело
Почніть використовувати PDO або mysqli, і припиніть використання mysql, оскільки він застарілий. Крім того, MySQL не кидає винятків, так що спробуй ловити - це якийсь непотрібний :)
додано Автор Vlad Preda, джерело
Голосування закривається, оскільки занадто локалізовано через помилку. Наприклад, помилка, яку можна було б легше уникнути за допомогою параметризованих запитів. =)
додано Автор J. Steen, джерело
sql Injection alert!
додано Автор tomexsans, джерело
також використовуйте ('". $ _ POST [' Field4 ']."', '".
додано Автор user1646111, джерело

6 Відповіді

Ви зіпсували свою четверту змінну:

POST[Field4] [Should Be] $_POST[Field4]

Ви також пропустили цитату закриття після поля15

Щоб уникнути помилок, доцільно включити схему до запиту:

INSERT INTO example_table (field1, field2, field3) VALUES (value1, value2, value3);

EDIT

Як про те, щоб спробувати всі невтішний запит ...

mysql_query('INSERT INTO register VALUES ("'.$_POST['Field2'].'","'.$_POST['Field4'].'","'.$_POST['Field7'].'","'.$_POST['Field8'].'","'.$_POST['Field9'].'","'.$_POST['Field13'].'","'.$_POST['Field14'].'","'.$_POST['Field15'].'")');
2
додано
Не дуже потрібно
додано Автор asprin, джерело
Так, я чесно не знав, що вам не потрібна схема .... Чим більше ви знаєте ^
додано Автор Matt Clark, джерело
@Mayur бачити моє редагування, а також, ви могли б розмістити свій запит HTTP з усіма змінними POST?
додано Автор Matt Clark, джерело
Отже ... Ви говорите, що моя перша посада, яку я редагував, тому що кожен з них був задекларований, насправді був правильною відповіддю, і навіть якщо у мене ще є правильна відповідь у своєму повідомленні, хтось інший позначений як правильний? Дивовижний, радий допомогти!
додано Автор Matt Clark, джерело
помилка не для цього.
додано Автор Dnyan Waychal, джерело
@Matt Clark розмістив свою відповідь перед вами, але хтось знизив його. Тож він повертається.
додано Автор Mayur, джерело
@Matt Clark це було питання автоматичного збільшення, я проходив мінімальні параметри, я не передав ключове слово DEFAULT для автоматичного збільшення.
додано Автор Mayur, джерело
@Matt Clark тільки відредагував моє питання, я спробував його, все ще не працює.
додано Автор Mayur, джерело
,'$_POST[Field15])'");
                  ^_______________ Missed quote.

Використовуйте параметри замість конкатенації даних POST, щоб уникнути потенційного SQL-ін'єкції.

2
додано

Фактично синтаксис був неправильним,

Insert into register ('field1','field2',...,'field n') values ('value1','value2',..,'value n');
2
додано
Немає, є вагомі причини, щоб перерахувати імена полів, але якщо ви вставите в сюжетні поля, починаючи з першого, вони не є обов'язковими.
додано Автор MortenSickel, джерело
Голосування, тому що я ненавиджу, коли люди чітко приймають відповідь, але не голосують за це.
додано Автор bowlerae, джерело
@sibimani спасибі за допомогу.
додано Автор Mayur, джерело
@bowlerae хтось має голос його вниз, спочатку це було -1, я woted його на -1 до 0, ви голосуєте до 1. отримали його.
додано Автор Mayur, джерело
@Sibi_it Для запропонованого ідентифікатора стовпця автоматично збільшується. Я. Net розробник думав, що MySQL автоматично збільшує значення, як SQL Server.
додано Автор Mayur, джерело
І те ж саме не використовує $ _POST [значення] у запиті. Краще присвоїти значення певній змінної типу $ field1 = $ _POST [field1]. після цього використовуйте цю змінну в запиті.
додано Автор sibimani, джерело
Насправді, якщо ви вкажете, що в запиті $ _POST ['value'], це дасть помилку.
додано Автор sibimani, джерело

mysql_query не кидає винятків, ви повинні перевірити його повернене значення і викликати mysql_error для отримання додаткової інформації.

Як зазначено в коментарях, MySQL ist застарілий.

0
додано

Я не бачу ніяких проблем тут, але, напевно, "POST [Field4]" - це помилка, але, як казали інші, ви дійсно не повинні використовувати функції mysql_.

0
додано

Він повинен бути таким:

$query = "INSERT INTO table(column 1, column 2, column 3) VALUES('".$value1."','".$value2."', '".$value3."')";

Спробуйте це.

0
додано
Ukrainian PHP comunity
Ukrainian PHP comunity
885 учасників

dev-ua/php