2012-08-17 65 views
1

我有一個連接到mysql數據庫的php頁面。我知道與數據庫的連接很好,因爲我有一個php代碼,可以將數據庫中的信息顯示在網頁上。當我嘗試向數據庫中插入新數據時,頁面刷新並且數據未被插入。我已經檢查過,以確保insert into命令具有正確的值。php不傳遞數據到mysql

 <?php 

    if (isset($_POST['User_Name'])) 
     { 

      include "connect_to_mysql.php"; 

      $name = mysql_real_escape_string($_POST["Name"]); 

      $sql = mysql_query("SELECT TestID FROM test WHERE Name='$name' LIMIT 1")or die (mysql_error()); 
      $productMatch = mysql_num_rows($sql); 

      if ($productMatch > 0) 
       { 
        echo 'Sorry you tried to place a duplicate "User Account" into the system, <a href="index.php">click here</a>'; 
        exit(); 
       } 
       else 
       { 

        $sql = mysql_query("INSERT INTO test (TestID,Name) 
         VALUES('', '$name')") or die (mysql_error()); 
        $uid = mysql_insert_id(); 

        header("location: index.php"); 
        exit(); 
       } 
     } 
?> 
<?php 

    include "connect_to_mysql.php"; 
    $User_list = ""; 
    $sql = mysql_query("SELECT * FROM test"); 
    $UserCount = mysql_num_rows($sql); 
    if ($UserCount > 0) 
     { 
      while($row = mysql_fetch_array($sql)) 
       { 
         $id = $row["TestID"]; 
         $name = $row["Name"]; 

         $User_list .= "Users ID: $id - <strong>$name</strong>&nbsp; &nbsp; &nbsp;<br />"; 
       } 
     } 
     else 
     { 
      $User_list = "You have no users listed in the database."; 
     } 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 
<div align="center" id="mainWrapper"> 
    <div id="pageContent"><br /> 
    <div align="right" style="margin-right:32px;"><a href="index.php#UserForm">+ Add New User</a></div> 
<div align="left" style="margin-left:24px;"> 
     <h2>User list</h2> 
     <?php echo $User_list; ?> 
    </div> 
    <hr /> 
    <a name="UserForm" id="UserForm"></a> 
    <h3> 
    &darr; Add New User Form &darr; 
    </h3> 
    <form action="index.php" enctype="multipart/form-data" name="myForm" id="myform" method="post"> 
    <table width="90%" border="0" cellspacing="0" cellpadding="6"> 
     <tr> 
     <td width="20%" align="right">Name</td> 
     <td width="80%"><label> 
      <input name="name" type="text" id="name" size="50" /> 
     </label></td> 
     </tr> 
     <tr> 
     <td>&nbsp;</td> 
     <td><label> 
      <input type="submit" name="button" id="button" value="Add This Name Now" /> 
     </label></td> 
     </tr> 
    </table> 
    </form> 
    <br /> 
    <br /> 
    </div> 
</div> 
</body> 
</html> 
+0

也許你可以嘗試打開一個MySQL的實例,並嘗試從那裏直接插入數據?因爲當你試圖用PHP插入一個數據庫的東西時,它並沒有真正地告訴你什麼出了問題,但是如果你直接使用MySQL,它會告訴你什麼是錯的(可能是一個未轉義的引用或者一些小的東西但很難抓到)。 – Raymond 2012-08-17 01:55:45

+1

不建議再使用舊的'mysql _ *()'函數。他們計劃被棄用。請考慮使用支持預先準備好的語句的現代API,例如PDO或MySQLi。 – 2012-08-17 01:59:21

回答

0

我看到兩個問題馬上(可能會更多)。首先,PHP數組鍵區分大小寫。您正在訪問$_POST['Name'],但您的表單輸入爲name。其次,您要測試$_POST['User_Name']它不會出現在任何地方存在:

// Look for name in the $_POST 
if (isset($_POST['name'])) 
{ 
    include "connect_to_mysql.php"; 
    // name is case-sensitive 
    $name = mysql_real_escape_string($_POST["name"]); 

以後,如果你的表有TestID的AUTO_INCREMENT ID,您應該省略,或者在插入statment插入NULL:

// Don't include TestID if it is AUTO_INCREMENT. That will happen automatically 
$sql = mysql_query("INSERT INTO test (Name) 
        VALUES('$name')") or die (mysql_error()); 
+0

Thnx幫助球員,修復它。不能相信我錯過了那樣簡單的事情。猜猜花了整整一天的時間打破休息是不是一個好理想....大聲笑。 – Jacob 2012-08-17 01:58:58

0

我認爲它會工作,如果你改變

if (isset($_POST['User_Name'])) 

if (isset($_POST['Name'])) 

您檢查窗體中是否存在不存在的東西。

0

增加:

如果TestID是自動增量,改變以下

"INSERT INTO test (TestID,Name) VALUES('', '$name')" 

"INSERT INTO test (Name) VALUES('$name')" 
0

如果你沒有得到任何錯誤,這意味着你有一個錯誤在你的MySQL語法中,測試它的兩種方法是將語法複製到PH中PMyAdmin或你的本地MySQL命令行是什麼,看看你是否有輸出錯誤。或者你可以做的另一件事是修改你所有的mysql_query();通過添加功能mysql_query()or die(mysql_error());