2014-12-09 3 views
1

Мы работаем над школьным проектом. Мы пытаемся использовать простой MySQL для хранения данных из одной текстовой формы HTML в базу данных MySQL.Ошибка синтаксиса MySQL

Мой HTML выглядит следующим образом:

<form action="sql/tilmeld-sms.php" method="post"> 
     <h2>Tilmelding til SMS:</h2> 
     <input type="text" name="sms"> 
     <input type="submit" value="Submit"> 
     </form> 

Наша SQL выглядит следующим образом:

<?php 
$connect = mysql_connect(“localhost”, “ODBC”, “”); if (!connect) { die('Connection Failed: ' . mysql_error()); { mysql_select_db(“database_name”, $connect); 

$user_info = “INSERT INTO sms (sms) VALUES ('$_POST[sms]')”; if (!mysql_query($user_info, $connect)) { die('Error: ' . mysql_error()); } 
echo “Your information was added to the database.”; 
mysql_close($connect); 
?> 

Когда мы бежим это на нашем локальном хосте, мы получаем синтаксическую ошибку в строке 4. Что означает, что-то не так в этой строке кода:

$user_info = “INSERT INTO sms (sms) VALUES ('$_POST[sms]')”; if (!mysql_query($user_info, $connect)) { die('Error: ' . mysql_error 

Мы знаем, что это очень просто MySQL. Но в первый раз мы его используем, и в первый раз мы пытаемся сохранить данные из HTML-формы в базу данных mysql.

Дополнительная информация:

  • Databasename: projekt32
  • Databasehost: локальный
  • Имя пользователя: ODBC (Читаем это общее имя пользователя для локального хоста на Windows)
  • Пароль: нет пароля на localhost мы читаем
  • Табличное: sms

EDIT: Это код ошибки мы получаем:

Parse error: syntax error, unexpected 'INTO' (T_STRING) in C:\xampp\htdocs\projekt-3-2\sql\tilmeld-sms.php on line 4 

EDIT2: Это школьный проект, и MySQL является частью этого проекта. Мы не пройдем, не используя его, поэтому предлагаем другие вещи, которые мы можем сделать, чем MySQL не работает, но спасибо в любом случае!

+5

Вы действительно используете "умные кавычки" ('«'и'»') вместо простых двойные кавычки ('" ')? –

+1

Кроме того, пожалуйста, пожалуйста, пожалуйста, прекрати используя MySQL и начинать использовать MySQLi или PDO с подготовленными операторами/связывать переменные .... вы просто учитесь, поэтому не начинайте изучать вредные привычки, но учитесь делать это правильно с самого начала –

+0

Это школьный проект, и MySQL является частью этого проекта, и мы не можем пройти без использования MySQL. Поэтому мы должны сделать это таким образом. – user3414678

ответ

1

Постарайся это

<label for="sms">SMS</label> 
        <input id="sms" type="text" name="sms" /> 

<input type="submit" name="add" id="add" value="Go"> 




$sms = kontroll_form_data_string($_POST['sms'], 100); 

if (isset($_POST['add'])) { 
       $db = mysql_connect('localhost', 'ODBC', ''); 
       mysql_select_db("projekt32") or die(mysql_error()); 

        $insert = "INSERT INTO sms(sms) VALUES('$sms')"; 
        if(mysql_query($insert)) { 
         echo("Done"); 
        } 
} 
+0

Большое спасибо, это почти срабатывает, я думаю. Но мы получаем эту ошибку, когда мы пытаемся добавить данные: доступ запрещен для пользователя '@' localhost 'в базу данных' projekt32 'Но насколько я знаю, на локальном хосте нет пользователей, поэтому я не уверен, что делать. – user3414678

+0

Можете ли вы попытаться создать пользователя для этого? Таблица? Перейдите к этой таблице в базы данных, выбрать привилегии и добавить пользователя, а затем добавить нового пользователя и перейти к '$ db = mysql_connect ('localhost', 'ODBC', '');' – frantsium

+0

Мы сделали пользователя и предоставили этому пользователю все привилегии. И что-то произошло, потому что, когда мы пытаемся добавить данные, мы не получаем ошибок. На самом деле мы получаем только пустой сайт, когда мы отправляем данные. Но данные не добавляются в таблицу, когда мы открываем таблицу с пустым PHPmyadmin. – user3414678

2

Вы используете обратные тики вместо двойных кавычек/одинарных кавычек.

ОБНОВЛЕНО:

$connect = mysql_connect('localhost', 'ODBC', ''); 
if (!connect) { 
    die('Connection Failed: ' . mysql_error()); 
} // ALSO Use } instead of { here. 
mysql_select_db('database_name', $connect); 

ТАКЖЕ,

$user_info = "INSERT INTO sms (sms) VALUES ('".$_POST['sms'] ."')"; 
+0

Это правильный ответ, за исключением того, что OP использует изогнутые кавычки, – megaflop

+0

Спасибо, что ответили, мы получили его сейчас! – user3414678

0

Я думаю, вы должны попробовать "mysql_real_escape_string", Concrete example of where mysql_real_escape_string fails and Prepared Statements are necessary

$connect = mysql_connect(“localhost”, “ODBC”, “”); if (!connect) { die('Connection Failed: ' . mysql_error()); { mysql_select_db(“database_name”, $connect); 

$sms = mysql_real_escape_string($_POST[sms]); 

$user_info = “INSERT INTO sms (sms) VALUES ('$sms')”; if (!mysql_query($user_info, $connect)) { die('Error: ' . mysql_error()); } 
echo “Your information was added to the database.”; 
mysql_close($connect); 

Я надеюсь, что это поможет вам.

Смежные вопросы