2012-11-14 26 views
0

當我通過php表單提交留言簿詳細信息時,它以「成功」結束,但是當我查看MySQL數據庫時,它只創建新條目,但沒有任何細節存在自動ID和日期。來自留言簿的PHP腳本不會添加到MySQL

這裏的形式:guestbook.php

<form id="form1" name="form1" method="post" action="addguestbook.php"> 
<td><input name="name" type="text" id="name" size="40" /></td> 
<td><input name="email" type="text" id="email" size="40" /></td> 
<td><textarea name="comment" cols="40" rows="3" id="comment"></textarea></td> 
<td><input type="submit" name="Submit" value="Submit" /> <input type="reset" 
name="Submit2" value="Reset" /></td> 

這裏的腳本:addguestbook.php

$host="address"; // Host name 
$username="username"; // Mysql username 
$password="password"; // Mysql password 
$db_name="guestdb"; // Database name 
$tbl_name="guestbook"; // Table name 

// Connect to server and select database. 
mysql_connect("$host", "$username", "$password")or die("cannot connect server "); 
mysql_select_db("$db_name")or die("cannot select DB"); 

$datetime=date("y-m-d h:i:s"); //date time 

$sql="INSERT INTO $tbl_name(name, email, comment, datetime)VALUES('$name', '$email',  
'$comment', '$datetime')"; 
$result=mysql_query($sql); 

//check if query successful 
if($result){ 
echo "Successful"; 
echo "<BR>"; 

// link to view guestbook page 
echo "<a href='viewguestbook.php'>View guestbook</a>";} 

else { 
echo "ERROR";} 
mysql_close(); 
+2

你在哪裏定義'$ name','$ email'和'$ comment'?你應該看看使用PDO或mysqli,否則它可能會有SQL注入漏洞。 – andrewsi

+0

您尚未填充'$ name'或'$ comment'或'$ email'變量。 –

+0

'var_dump($ sql)' - 看看你實際正在做什麼。調試!這段代碼可能希望'register_globals'開啓,這是一個可怕的想法。 – deceze

回答

2

,我可以看到,你沒有帶定義的變量。增加這上面$datetime=da...

$name = isset($_POST['name']) ? $_POST['name'] : false; 
$email = isset($_POST['email']) ? $_POST['email'] : false; 
$comment = isset($_POST['comment']) ? $_POST['comment'] : false; 

除此之外:

4

之前準備SQL查詢($sql),必須填寫$name$email$comment與瓦爾$_POST數據。

<?php 

// .. 

$name = $_POST['name']; 
$email = $_POST['email']; 
$comment = $_POST['comment']; 

$sql = "INSERT INTO $tbl_name(name, email, comment, datetime)VALUES('$name', '$email',  
'$comment', '$datetime')"; 
$result = mysql_query($sql); 

// .. 

獎勵:使用PDO

1

有可能是這個多種原因。

我建議改變你的查詢到這一點:

INSERT INTO $tbl_name set name='$name', email='$email', comment='$comment', datetime='$datetime'