1

mysqlデータベースに接続するphpページがあります。データベースからの情報をWebページに表示するphpコードがあるので、データベースへの接続が良好であることを知っています。新しいデータをデータベースに挿入しようとすると、ページが更新され、データが挿入されません。insertintoコマンドの値が正しいことを確認しました。

      <?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>
4

4 に答える 4

0

私はすぐに2つの問題を目にします(もっとあるかもしれません)。まず、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"]);

後で、テーブルのAUTO_INCREMENT IDがオンTestIDになっている場合は、それを省略するか、挿入ステートメントに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());
于 2012-08-17T01:54:16.873 に答える
0

変えればうまくいくと思います

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

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

フォームに存在しないものの存在を確認します。

于 2012-08-17T01:54:27.823 に答える
0

添加:

TestIDが自動インクリメントの場合、以下を変更します

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

"INSERT INTO test (Name) VALUES('$name')"
于 2012-08-17T01:56:31.977 に答える
0

エラーが発生しない場合、つまり MySQL 構文にエラーがあることを意味する 2 つのテスト方法は、構文を PHPMyAdmin またはネイティブの MySQL コマンド ラインにコピーして、出力エラーが発生するかどうかを確認することです。または、あなたができる別のことは、あなたのすべてを変更することですmysql_query(); 追加による機能mysql_query()or die(mysql_error());

于 2012-08-17T01:56:42.670 に答える