2013-09-11 2 views
2

У меня есть база данных, называемая сообщением, с таблицей, называемой пользователем в ней. Таблица, «пользователь» имеет пять столбцов, user_id, который является первичным ключом и автоматически увеличивается. Тогда имя и фамилия имя пользователя и пароль. Но когда я нажимаю кнопку отправки, она показывает мне ошибку подключения. Не могу найти ошибку!PHP: Не подключаться к базе данных

Что это может быть?

<!DOCTYPE html> 
<html> 
<head> 
<script src="jquery.js"></script> 
<title> Create Account 
</title> 

</head> 

<body> 
<?php 

$dbc=mysqli_connect('localhost', 'root', '', 'message') or die("Error"); 
if(isset($_POST['submit'])) 
{ 

    if($_POST['password']==$_POST['repassword']) 
    { 
     $fname=$_POST['fname']; 
     $lname=$_POST['lname']; 
     $username=$_POST['username']; 
     $password=$_POST['password']; 
     $password_hash=sha1($password); 
     $query="INSERT INTO user (fname, lname, username, password)"."VALUES('$fname', '$lname', '$username', '$password_hash')"; 
     $result=mysqli_query($dbc, $query) or die("Error Connecting"); 
     echo "Account Created!"; 
     mysqli_close($dbc); 


    } 
    else 
    { 
     echo "Passwords do not match"; 
    } 
} 

?> 
+0

ли вы выбрали таблицу '' user' через mysqli_select_db'? Я не мог это видеть! – ekremkaraca

+0

Зачем ему это делать? –

+1

Не имеет прямого отношения к проблеме, но это ** очень ** вводит в заблуждение для пользователей, сообщивших об ошибках, и вы также отлаживаете/запрашиваете помощь: если 'mysqli_query()' fail не работает, вы должны сообщить об этом как «Query failed» или «Couldn «создать учетную запись». Он никогда не должен указывать «Подключение к ошибкам», потому что в тот момент вы либо уже подключены, либо провалились выше («Errror»). – Mario

ответ

1

Вам нужно добавить "" вокруг поля вы собираетесь вставить.

Вы в настоящее время есть:

$query="INSERT INTO user (fname, lname, username, password)"."VALUES('$fname', '$lname', '$username', '$password_hash')"; 

ли это вместо:

$query='INSERT INTO user (fname, lname, username, password) '. 
    'VALUES("'.$fname.'", "'.$lname.'", "'.$username.'", "'.$password_hash.'")'; 
+0

Они интерполируются в вложенных котировках –

+1

Еще лучше, используйте обратные ссылки, и нет необходимости в "." VALUES удалить "." и backtick ". $ fname." + backtick, а для debug, echo $ query, скопируйте запрос в свой phpMyAdmin и посмотрите, какую ошибку он вам дает. – Grmn

+0

Это сработало спасибо! Мне просто нужно очистить свою фирму после создания учетной записи! Как я могу это сделать? –

1

изменить ваш запрос, чтобы вставить

$query="INSERT INTO user (fname, lname, username, password) VALUES('".$fname."', '".$lname."', '".$username."', '".$password_hash."')"; 
+0

Спасибо, это сработало! Хотелось бы узнать, почему мы должны писать в этом формате? Потому что я думаю, что предыдущий был правильным. –

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