2012-03-11 4 views
1

Мой код не вставляет никаких записей в mysql. Что не так? Я действительно смущен. Я разработал форму, и я хочу прочитать данные из текстового поля и отправить в базу данных.вопрос при вводе данных в базу данных

<?php 
if(isset($_post["tfname"])) 
    { 
     $id=$_post["tfid"]; 
     $name=$_post["tfname"]; 
     $family=$_post["tffamily"]; 
     $mark=$_post["tfmark"]; 
     $tel=$_post["tftell"]; 

$link=mysql_connect("localhost","root",""); 
if (!$link) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("university",$link); 
$insert="insert into student (sid,sname,sfamily,smark,stel) values ($id,'$name','$family',$mark,$tel)"; 

mysql_query($insert,$link); 
    } 
mysql_close($link); 
?> 
+0

Какие ошибки вы получаете? –

+1

PHP-переменные чувствительны к регистру; '$ _post' не будет работать, так как правильная переменная' $ _POST' (если у вас установлены соответствующие параметры отчетов об ошибках, это должно появиться в уведомлении). Кроме того, вы должны проверить правильность выполнения запроса и отобразить/записать 'mysql_error()', если это не так. Кстати, знаете ли вы, что даже если ваш скрипт работает, в нем есть зияющее отверстие для инъекций SQL, с помощью которого любой потенциальный злоумышленник может разграбить вашу базу данных? –

ответ

2

Лучше поставить метку кавычки для id, mark и tel после значений в вашем запросе. Также как @Another Code сказал, вы должны использовать $ _POST вместо $ _post в своем коде. Попробуйте это и сказать мне результат:

<?php 
if(isset($_POST["tfname"])) { 
    $id=$_POST["tfid"]; 
    $name=$_POST["tfname"]; 
    $family=$_POST["tffamily"]; 
    $mark=$_POST["tfmark"]; 
    $tel=$_POST["tftell"]; 

    $link=mysql_connect("localhost","root",""); 
    if (!$link) { 
     die('Could not connect: ' . mysql_error()); 
    } else { 
     mysql_select_db("university",$link); 
     $insert="insert into student 
       (sid,sname,sfamily,smark,stel) values 
       ('$id','$name','$family','$mark','$tel')"; 
     mysql_query($insert,$link) or die (mysql_error()); 
     mysql_close($link); 
    } 
} else { 
    die('tfname did not send'); 
} 
?> 

Использования mysql_query($insert,$link) or die (mysql_error()); для извлечения сообщений об ошибке.

+0

mohammad, это не сработало. – samira

+0

@sami: ВЫ ПРЕДОСТАВЛЯЕТЕ ОШИБКУ, ЧТО ВЫ ПОЛУЧАЕТЕ? запись его не работала НЕ ОТВЕТ ... –

+0

mysql_error() должен напечатать ошибку. Что это? –

0

С кодом вы условии, что он может быть почти ничего - чтобы сделать некоторые тесты ... ты echo'd что-то, чтобы подтвердить, что вы даже получаете tfname в POST? Отличается ли он от базы данных? У полей $ id, $ mark и $ tel нужны одинарные кавычки вокруг них? Нам нужно знать больше о том, где код не работает, чтобы предоставить дополнительную помощь, но этот фрагмент выглядит так, как будто он должен работать, тем временем, используйте некоторые эхо-сигналы, чтобы сузить проблему!

0

Попробуйте запустить сгенерированный sql-запрос в браузере запросов sql. Получить запрос с помощью инструкции «echo $ insert».

-1

Изменение $ вставки в:

$insert="insert into student (sid,sname,sfamily,smark,stel) values ($id,'".$name."','".$family."','".$mark."','".$tel."')"; 

дополнительно установить ini_set('display_errors',1) так, что PHP выводит сообщения об ошибках по мере необходимости.

И наконец, всякий раз, когда вы выполняете запрос mysql, попробуйте использовать в запросе or die(mysql_error()), чтобы, если что-то не так с mysql или синтаксисом, мы знаем.

$q = mysql_query($query) or die(mysql_error()); 
+0

'die' не должен использоваться для обработки ошибок, так как он отключает весь скрипт. Это может легко вызвать ошибки и странный вывод, а в живых средах это плохая идея напрямую показывать ошибки скрипта пользователю. Важно просто написать правильные процедуры обработки ошибок. –

+0

Я привел этот пример, считая, что приложение работает как тестовый прогон, и как только ошибка исправлена, функция штампа может быть удалена ... – yuvrajm

+0

Это прекрасно, но хорошо сделать заметку об этом, чтобы люди знали, что это означает только для отладки. Кроме того, скрипту всегда нужна правильная (база данных) обработка ошибок; запросы, которые работают сейчас, могут решить перестать работать в будущем. –

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