2012-07-09 91 views
0

我的代碼顯示-1記錄插入的錯誤,並沒有插入字段到數據庫。任何想法爲什麼這樣做?-1記錄插入的錯誤

<?php 
include("dbconnect.php"); 
$con=new dbconnect(); 
$con->connect(); 
error_reporting(E_ALL); 

if($_POST) { 

    $users_name = $_POST['name']; 
    $users_email = $_POST['email']; 
    $users_website = $_POST['website']; 
    $users_comment = $_POST['content']; 

    $users_name = htmlspecialchars($users_name); 
    $users_email = htmlspecialchars($users_email); 
    $users_website = htmlspecialchars($users_website); 
    $users_comment = htmlspecialchars($users_comment); 


$postid = $_GET['id']; 

$sSql = "INSERT INTO comments 
(post_id, name, email, website,content) 
VALUES ($postid, '$users_name', 
     '$users_email', '$users_website', '$users_comment')"; 

    mysql_query($sSql); 
    $update=mysql_affected_rows(); 
    echo "<h2>$update Record Inserted</h2><br />"; 
    echo '<h2> Your Comment is submitted</h2><br />'; 
} 
?> 

由於某些原因,評論表沒有得到更新。我是mySQL和PHP編程的新手。任何建議對我都有很大的幫助。謝謝。

+3

有一件事你總是可以做的是'echo $ sSql'並查看查詢是否看起來像你想要的。完成了@sachleen說的 – sachleen 2012-07-09 01:04:49

+0

;採取查詢並直接在MySQL(PhpMyAdmin或Navicat或任何其他)中運行它,因爲它會給你更好的錯誤信息(在Googleable中更好)。 – 2012-07-09 01:09:49

+0

'htmlspecialchars'不適用於此場景。請停止使用古代的mysql_ *函數編寫新的代碼。他們不再被維護,社區已經開始[棄用流程](http://news.php.net/php.internals/53799)。相反,您應該瞭解準備好的語句並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli)。如果你關心學習,[這裏是一個很好的PDO相關教程](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)。 – DCoder 2012-07-09 04:11:15

回答

0
  1. 在你的PHP SQL語句&評論的mysql_query聲明首先插入虛擬值。

    $sSql = "INSERT INTO comments (post_id,name,email,website,content) VALUES (100, 'anoop.pete','[email protected]', 'www.anooppete.com', 'Nice Website')"; 
    //mysql_query($sSql); 
    //$update=mysql_affected_rows(); 
    
  2. 打印的SQL語句...

    print($sSql); 
    
  3. 複製從Web瀏覽器的SQL語句,在MySQL

  4. 執行$ sSql如果該行被插入,在MySQL ,取消註釋並再次運行相同的頁面。

    mysql_query($sSql); 
    $update=mysql_affected_rows(); 
    

如果它運行,嘗試刪除用htmlspecialchars()

$users_name = $_POST['name']; 
    $users_email = $_POST['email']; 
    $users_website = $_POST['website']; 
    $users_comment = $_POST['content']; 

我猜你用htmlspecialchars()將返回一些無效字符...

+0

謝謝Anoop!在這種情況下,如果我必須在存儲到數據庫之前驗證數據。我如何解決這個問題? – user1479431 2012-07-14 12:53:11

+0

您可以使用JavaScript來驗證 – 2012-07-15 13:16:33

0

-1表示查詢返回錯誤。

將這個SQL查詢到SQL瀏覽器的SQL「查詢」,看看是什麼錯誤是:

INSERT INTO 
comments 
(post_id, 
name, 
email, 
website, 
content) 
VALUES 
(2, 
'name', 
'[email protected]', 
'http://', 
'comment')