2015-11-16 84 views
-2

這段代碼有什麼問題,只有ID到數據庫和其他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($ CON,$ SQL);'正在運行的每個腳本被加載時,不管形式已提交或不。此外,你有錯誤的順序變量,它應該是'$ phone = $ _POST ['phone'];'而不是'$ _POST ['phone'] = $ phone;'。 (你正在給'超級全球'$ _POST ['phone']'分配'$ phone',這對你沒有任何幫助)。另外,請閱讀[我如何防止在PHP中的SQL注入?](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)(這是非常重要的爲您的數據庫安全)。 – Qirel

+0

非常感謝,正確的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我不知道誰downvoted,但它不可能是OP(需要50代表downvote,他有10)。此外,他的查詢很好,沒有*需要*來脫離雙引號(變量仍然通過),這實際上是一個個人偏好的問題;) – Qirel

+2

這個答案讓OP對SQL注入保持開放。儘管在評論中提到了這個問題,但是這個答案應該至少提供了使用準備好的陳述的鏈接引用,@ @ Qirel的評論在給定時間不再存在。此外,條件語句在一個給定的點上將失敗,並且應該考慮到,如果任何字段留空,它將引發錯誤。 –