2014-01-20 6 views
-1

Прежде чем я начну, я просмотрел другие подобные вопросы и сделал все на них, но он все еще не работает. Я создаю скрипт регистра, и ошибок не возникает, но ни одна из представленных данных не появляется в базе данных. База данных называется «тестом» и «пользователями» таблицы. Вот эта форма;PHP не вставляет данные в MySQL DB

<body><link rel="stylesheet" type="text/css" href="style.css"> 
<form action="script3.php" method="get"> 
<p>First Name:<input type="text" name="first_name" /></p> 
<p>Last Name:<input type="text" name="last_name" /></p> 
<p>Email: <input type="text" name="email" /></p> 
<p>Password: <input type="text" name="pass" /></p> 
<input type="submit" name="submit" value="Submit!" /> 
</form> 
</body> 
</html> 

Это script3;

<?php 
$first_name = $_REQUEST['first_name']; 
$last_name = $_REQUEST['last_name']; 
$email = $_REQUEST['email']; 
$pass = $_REQUEST['pass']; 
DEFINE ('DB_USER', 'root'); 
DEFINE ('DB_PASSWORD', ''); 
DEFINE ('DB_HOST', 'localhost'); 
DEFINE ('DB_NAME', 'test'); 
$dbc = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) 
OR die("could not connect"); 
$query = ("INSERT INTO users (first_name, last_name, email, pass, reg_date) 
VALUES ('$first_name', '$last_name', '$email', SHA1('$pass'), NOW());") 
?> 
+1

удалить ** @ ** в 'mysqli_connect' и еще раз посмотреть на наличие ошибок. Кроме того, вместо GET используйте POST для вставки данных – Leonardo

+2

'@ query' является переменной. На самом деле этот запрос не выполняется. – cgTag

+0

Отсутствует точка с запятой в конце '... NOW());)' --- с одной стороны. –

ответ

2

Попробуйте это, Вам нужно выполнить запрос: Ref

$query = ("INSERT INTO users (first_name, last_name, email, pass, reg_date) 
VALUES ('$first_name', '$last_name', '$email', SHA1('$pass'), NOW());"); 
mysqli_query($dbc, $query); 

: http://in3.php.net/mysqli_query

+0

Это единственное, что сработало.' + 1' ;-) –

+0

Still не работает в моей системе :( – Fabian

+0

Это невозможно. Я проверил это, и вы явно что-то не так. Проверьте имена столбцов, посмотрите, совпадают ли они. @Fabian Plus, вы не должны использовать метод GET. можно увидеть в адресной строке. Используйте 'POST' –

2

Необходимо выполнить SQL-запрос, а не просто запросить SQL-строку запроса.

+0

Я делаю это с помощью mysql_query() правильно? – Fabian

0

просто передать вашу строку запроса mysql_query (функции).

mysqli_query($query); 
+0

OP использует 'mysqli_ * 'функции, а не' mysql_ * ' –

1
<?php 
$first_name = $_REQUEST['first_name']; 
$last_name = $_REQUEST['last_name']; 
$email = $_REQUEST['email']; 
$pass = $_REQUEST['pass']; 
DEFINE ('DB_USER', 'root'); 
DEFINE ('DB_PASSWORD', ''); 
DEFINE ('DB_HOST', 'localhost'); 
DEFINE ('DB_NAME', 'test'); 
$dbc = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) 
OR die("could not connect"); 
$query = ("INSERT INTO users (first_name, last_name, email, pass, reg_date) 
VALUES ('$first_name', '$last_name', '$email', SHA1('$pass'), NOW());") 
    // insert this line, it will work 
    mysqli_query($query); 
+0

Это все еще не работает, спасибо вам все равно – Fabian

+0

попробуйте его, и посмотрите ошибку, затем сообщите, что будет дальше if (!mysqli_query ($ query, $ dbc)) { die ('Ошибка:'. mysqli_error()); } echo "1 запись добавлена"; –

+0

У вас отсутствует параметр. http://php.net/mysqli_query – TiiJ7

0

Чувак, вы должны вставить только одну строку.

mysqli_query($query,$dbc); 

и ваш код уже готов.

0
<?php 
$first_name = $_REQUEST['first_name']; 
$last_name = $_REQUEST['last_name']; 
$email = $_REQUEST['email']; 
$pass = $_REQUEST['pass']; 
DEFINE ('DB_USER', 'root'); 
DEFINE ('DB_PASSWORD', ''); 
DEFINE ('DB_HOST', 'localhost'); 
DEFINE ('DB_NAME', 'test'); 
$dbc = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) //@ symbol removed 
OR die("could not connect"); 
$today=Date('Y-m-d'); 
$query = "INSERT INTO users (first_name, last_name, email, pass, reg_date) 
VALUES ('$first_name', '$last_name', '$email', SHA1('$pass'), '$today')"; //() removed , '' added for date 
$res=mysqli_query($abc,$query); //added 
?> 

это будет работать.

если не работает, то комментарий Ваше сообщение об ошибке ..

+0

Использование котировок вокруг '' NOW() ''будет производить' 0000-00-00' в качестве даты. Кстати, я не тип downvoting, это не мой стиль. ;-) –

0
$query = ("INSERT INTO users (first_name, last_name, email, pass, reg_date) 
VALUES ('".$first_name."', '".$last_name."', '".$email."', SHA1('".$pass."'), NOW());") 

    mysqli_query($query); 
Смежные вопросы