PHP代码向MySQL数据库插入空记录

3

我的代码将一个空记录插入到MySQL表“table1”中,而不是获取在form1.html中“Name”字段中插入的内容。您有什么想法,为什么它会插入一个空记录,而不是用户在字段中输入的内容?

form1.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd"
    >
<html lang="en">
<head>
    <title>Insert Your Name</title>
</head>
<body>
    <h3> Insert Your Name</h3>
    <form action="form1.php" method="post">
        <input type="text" name="Name">
            <input type="Submit" value="Submit" name="Submit">
    </form>
</body>
</html>

form.php

> <?php 
> $connection =
> mysql_connect("localhost","root","")
> or die ("Couldn't Connect To Server");
> $db = mysql_select_db("db1",
> $connection) or die ("Couldn't Select
> Database"); $query = "CREATE TABLE IF
> NOT EXISTS table1 (Name VARCHAR(20))";
> $result = mysql_query($query) or die
> ("Query Failed: " . mysql_error());
> $query = "INSERT INTO table1 (Name)
> VALUES ('$_post[Name]')"; $result =
> mysql_query($query) or die ("Query
> Failed: " . mysql_error()); $query =
> "SELECT * FROM table1"; $result =
> mysql_query($query) or die ("Query
> Failed: " . mysql_error());
>     echo "<TABLE BORDER = '1'>";
>     echo "<TR>";
>     echo "<TH>Name</TH>";
>     echo "</TR>";
>     
>     while ($row = mysql_fetch_array($result))
>     {
>         echo "<TR>";
>         echo "<TD>", $row['name'], "</TD>";
>         echo "</TR>";
>     }
>     echo "</TABLE>";
>     mysql_close($connection); ?>

5
+1 很少有声望为1的新手能够以高可读性发布问题 :) (注:+1表示同意,声望指用户在社区中的信誉度) - ajreal
谢谢ajreal!我希望这里是我能找到答案的地方 :) - Tom Granot
你是否查看了数据库以验证名称字段是否被保存在那里?这将确定问题是在插入还是选择中。 - Surreal Dreams
我不确定我理解了,Surreal Dreams。你的意思是我应该检查数据库中的名称字段是否保存正确吗?因为它已经保存正确了。 - Tom Granot
4个回答

2

与其

$query = "INSERT INTO table1 (Name) VALUES ('$_post[Name]')";

试试这个

$query = "INSERT INTO table1 (Name) VALUES ('" .
          mysql_real_escape_string($_post['Name'],$db) . "')";

谢谢你,Roy。我和Pradeep问了同样的问题:显示来自“table1”的数据表的PHP代码没有显示新记录。有什么想法吗? - Tom Granot
可能是同样的问题:case.echo "<TD>", $row ['Name'], "</TD>"; - royas

0
请修改这个。
<input type="text" name="fname">


$query = "INSERT INTO table1 (Name)
 VALUES ('".mysql_real_escape_string($_POST[fname],$db)."')"; 

然而,现在出现了一个不同的问题 - 显示包含数据的表格的 PHP 代码没有显示输入的新记录。有什么想法吗? - Tom Granot
插入数据后请重定向页面。 - Pradeep Singh
已经解决了,Pradeep,无论如何购买 - 你说的重定向页面是什么意思?我应该建立一个新的PHP文件,将其分成一个存储数据的文件(可能是HTML本身?)和一个显示数据的文件吗? - Tom Granot

0
 $query = "INSERT INTO table1 (Name)
 VALUES ('{$_POST[Name]}')"; $result =
 mysql_query($query) or die ("Query
 Failed: " . mysql_error());

$_POST$_GET 都是大写字母。

将显示代码更改为:

 while ($row = mysql_fetch_array($result))
     {
         echo "<TR>";
         echo "<TD>", $row['Name'], "</TD>";
         echo "</TR>";
     }

谢谢你,Horia!哇,这里的问题得到回答的速度真的很快。我也会把我的第二个问题转给你:显示包含数据的表格的PHP代码没有显示新记录。有什么想法吗? - Tom Granot
1
另外,以后尽量保持所有内容小写。这样会少很多麻烦。 - Horia Dragomir
完美运行!谢谢Horia。所以问题在于字母大小写,是吗?好的,知道了。 - Tom Granot
当我获得声誉时,当我获得声誉 :) - Tom Granot

0
 " . ($_POST['Fname'] != "") ? $_POST['Fname'] : "No Name" ."

谢谢Geeo!“无名称”的原因是什么?所以如果有人插入了一个空白字段,它会写入“无名称”吗? - Tom Granot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接