2015-11-16 5 views
-2

что не так в этом коде ,, Идентификатор только поступает в базу данных, а еще 3 строки (адрес электронной почты, телефон, имя) пуст также я разрабатываю сценарий на моем ноутбуке, но когда я загружаю он на публике не все значения поступают в базу данных, в чем причина? извините за мой плохой английскийphp и mysqli код

<?php 
$con=mysqli_connect("localhost","898515","5871209papy","898515db2"); 
if(isset($_POST['name'])){ 
$_POST['name']=$name;} 
if(isset($_POST['email'])){ 
$_POST['email']=$email;} 
if(isset($_POST['phone'])){ 
$_POST['phone']=$phone;} 

$sql="INSERT INTO final (name,email,phone) VALUES ('$name','$email','$phone')"; 
mysqli_query($con,$sql); 


?> 


<html> 
<head> 
<title>REGISTER</title> 
<style> 
a{ 
    text-decoration:none; 
    color:black; 
} 
a:visited{ 
    color:black; 

} 
body{ 
    background-color:grey; 

} 
</style> 
</head> 
<body> 
<form action="" method="post"> 
<table> 
<tr><td><b>Name:</b></td><td><input type="text" name="name"/></td></tr> 
<tr><td><b>Phone:</b></td><td><input type="text" name="phone" /></td></td></tr> 
<tr><td><b>Email:</b></td><td><input type="text" name="email"/></td></tr></br></br><br> 
<tr><td></td><td><input type="submit" name="submit" value="Select flat >>>"/></td></tr> 

</table> 
    </form> 

<p style=" text-align:center; 
"> 
</body> 

</html> 
+2

Ваш 'mysqli_query ($ жулик, $ SQL);' бежится каждый раз, когда скрипт загружен, независимо от того, форма была отправлена ​​или не. Кроме того, у вас есть переменные в неправильном порядке, это должно быть '$ phone = $ _POST ['phone'];' вместо '$ _POST ['phone'] = $ phone;'. (Вы назначаете '$ phone' суперглобальному' $ _POST ['phone'] ', который на самом деле вам не поможет). Кроме того, прочтите [Как предотвратить SQL-инъекцию в PHP?] (Http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) (это очень важно для вашей базы данных-безопасности). – Qirel

+0

спасибо alot ,, правильный sql запрос, если condidtion существует? если (состояние) { mysqli_query? } –

+1

со всем, что работает @Qirel, вы должны были поставить это как ответ ;-) –

ответ

2

Как = правильно ассоциативный оператор и поэтому он присваивает значение на правой стороне от него, на левой стороне. Я сделал простое редактирование для форматирования запроса SQL для упрощения.

Поэтому скорректированное PHP код будет выглядеть следующим образом:

<?php 

$con=mysqli_connect("localhost","898515","5871209papy","898515db2"); 

if(isset($_POST['name'])) 
{  
$name = $_POST['name']; 
}   

if(isset($_POST['email'])) 
{ 
$email = $_POST['email']; 
} 

if(isset($_POST['phone'])){ 
$phone = $_POST['phone']; 
} 

if(isset($_POST['submit'])) 
{ 
    $sql="INSERT INTO final (name,email,phone) VALUES ('".$name."','".$email."',".$phone.")"; 
    mysqli_query($con,$sql); 
} 

?> 
+0

Большое спасибо, (y) –

+0

@BhaumikMehta Я не знаю, кто проиграл, но это не могло быть OP (нужно 50 rep to downvote, у него 10). Кроме того, его запрос был в порядке, не было необходимости * выходить из двойных кавычек (переменные все еще передаются), это действительно вопрос личных предпочтений;) – Qirel

+2

Этот ответ оставляет OP открытым для SQL-инъекции. Несмотря на то, что в комментариях было упомянуто, этот ответ должен был хотя бы сделать ссылку ссылкой на использование подготовленных операторов, если комментарий @ Qirel больше не существует в данный момент времени. Кроме того, условные операторы терпят неудачу в одной заданной точке и должны учитывать, что если какое-либо поле остается пустым, оно выдает ошибку. –