2012-04-26 2 views
0

Я очень новичок в PHP & MySQL. Просто проектирование сайтов для друзей как хобби, поэтому любая помощь очень ценится. Когда у меня есть простая контактная форма на моей странице, я продолжаю получать сообщения об ошибках при отправке информации. Вот PHP:Начинающие проблемы с PHP и MySQL

<?php 
$con = mysql_connect("localhost","user","password"); 
if (!$con)) { 
die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("database_name", $con); 

$sql="INSERT INTO contact (first_name, last_name, email, phone, message) 
VALUES 
('$_POST[first_name]','$_POST[last_name]','$_POST[email]','$_POST[phone]','$_POST[message])"; 

if (!mysql_query($sql,$con)) { 
die('Error: ' . mysql_error()); 
} 
echo "1 record added"; 

mysql_close($con); 
?> 

Я положил в моем имени пользователя & пароль в случае необходимости, но я продолжаю «локальный» там. Это верно? У меня есть хостинг через webhostingpad. Я также вставляю имя моей базы данных выше. Вот мой HTML:

<!--Start of order form--> 

<form id="contactform" method="POST" action="http://www.talephotography.com/insert.php"> 
<p><label>First Name:<br /> 
<input type="text" name="first_name" class="textfield" value="" /> 
</label></p> 

<p><label>Last Name:<br /> 
<input type="text" name="last_name" class="textfield" value="" /> 
</label></p> 

<p><label>Email: <br /> 
<input type="text" name="email" class="textfield" value="" /> 
</label></p> 

<p><label>Phone: <br /> 
<input type="text" name="phone" class="textfield" value="" /> 
</label></p> 

<p><label>Message: <br /> 
<textarea name="message" class="textarea" cols="45" rows="5"></textarea> 
</label></p> 

<p><input type="submit" name="submit" class="button" value="Submit" /></p> 
</form> 
<!--End of order form--> 

Я могу разработать где угодно.


Изменил код, однако он отправляет только адрес электронной почты в базу данных.

mysql_select_db("databasename", $con); 

$first = mysql_real_escape_string($_POST['first']); 
$last = mysql_real_escape_string($_POST['last']); 
$email = strip_tags(mysql_real_escape_string($_POST['email'])); 
$number = preg_replace('/[^0-9]/', '', $_POST['number']); 
$number = (int) $number; 


$sql="INSERT INTO contact (first, last, email, phone); 
VALUES 
('$first','$last','$email','$number')"; 

Есть мой код, однако, когда я проверяю свою базу данных, единственная информация, указанная здесь, - это адрес электронной почты.

+1

Каковы сообщения об ошибках? – Tchoupi

+0

Разве вы не получали никаких сообщений по электронной почте, когда вы получили хостинг? – JonathanRomer

+0

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

ответ

3

localhost Правильно, если сервер базы данных находится на том же компьютере, что и веб-сервер. Когда вы настраиваете базу данных, она должна была сказать вам где-то, с чем вам нужно подключиться.

Это в сторону, сбежать от ваших -----------ing входов !!!!

Серьезно, возьмите эти переменные и тщательно промойте их mysql_real_escape_string, а затем конкатенации их в запросе. Вы поблагодарите меня позже.

+4

Или используйте [PDO] (http://php.net/manual/en/book.pdo.php). –

+0

Идентификатор также добавляет, что «НЕ ДОПУСКАЕТСЯ ---- ing ext/mysql»! используйте Mysqli или PDO :-) – prodigitalson

+0

@prodigitalson В MySQL (или любой другой системе) нет ничего плохого, если вы знаете, как его использовать. –

0

У вас есть дополнительный ) в вашей, если заявление:

if (!$con)) { 

должен быть

if (!$con) { 
0
if (!$con)) it is wrong one extra ')' present here, remove ')' and then execute 

, например

 if (!$con){ 

     //do something 

      } 
0

его запрос, что это неправильно, у вас есть a; который находится в середине вашего запроса.

$sql="INSERT INTO contact (first, last, email, phone); 
    VALUES 
('$first','$last','$email','$number')"; 

Обратите внимание на это в конце первой строки. Измените это:

$sql="INSERT INTO contact VALUES 
('$first','$last','$email','$number')"; 
0

Проблема с вашей третьей линией

$con = mysql_connect("localhost","user","password"); 
if (!$con)) { 
die('Could not connect: ' . mysql_error()); 
} 

есть дополнительная закрывающая скобка ) в вашей третьей строке. Удалите его, а затем вуаля!

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

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