我想从一开始就自学MySQL / PHP。以下代码从各种教程站点中解除。我正在使用我的虚拟主机提供的phpMyAdmin。
我创建了一个名为“ID”的自动递增字段和另一个名为“first”的字段(varchar,limit 30,not null)。然后我用一个名为“first”的文本字段和一个Submit按钮创建了一个简单的表单。我在框中键入我的名字,然后单击“提交”。这确实在数据库中使用ID创建了一行,但“first”字段始终为空。
我尝试用一些直截了当的单词替换'$ _POST [first]',这很有效 - 表中出现的字数很好。这就是我知道它确实在与数据库交谈的方式,它只是没有拿起文本字段
INSERT语句运行后,我显示表中的所有记录。它会显示所有ID号,然后显示空白“first”应该是什么。
我也有它回应INSERT语句。这是echo显示的内容: INSERT INTO tblHurray(ID,first)VALUES('','')
当我用'$ _POST [first]'替换单词时,echo看起来像这样: INSERT INTO tblHurray(ID,first)VALUES('','words')
这是我的第一个问题,如果我遗漏了任何相关信息,请告诉我!并提前感谢您的帮助。
这是表格:
<form action="run_input.php" method="post">
Name: <input type="text" name="first">
<input type="Submit">
</form>
这是点击“提交”时运行的内容:
<?
include("run_connect.php"); // this connects to the database, this works
$step1 = "INSERT INTO tblHurray(ID, first) VALUES ('','$_POST[first]')";
mysql_query($step1);
echo "$step1";
echo "<b><center>Database Output</center></b><br><br>";
$step2=mysql_query("SELECT * FROM tblHurray");
$num=mysql_numrows($step2);
$i=0;
while ($i < $num) {
$firstname=mysql_result($step2,$i,"first");
$ID=mysql_result($step2,$i,"ID");
echo "$ID: $firstname<br />";
$i++;
}
?>
答案 0 :(得分:1)
尝试
$step1 = "INSERT INTO tblHurray(ID, first) VALUES ('','".$_POST['first']."')";
虽然,如果你真的要去学习它,那么就开始吧 PHP PDO。从长远来看,它将为您节省很多麻烦,特别是对于参数化查询。
答案 1 :(得分:0)
这一行
$step1 = "INSERT INTO tblHurray(ID, first) VALUES ('','$_POST[first]')";
需要看起来像这样:
$step1 = "INSERT INTO tblHurray(ID, first) VALUES ('','" . mysql_escape_string($_POST['first']) . "')";
总是引用你的数组键(['first']而不是[first])这是一个好习惯。
此外,习惯于在插入数据库之前始终转义用户输入以防止SQL注入。
同时仔细检查以确保HTML表单上的输入名称与您的PHP代码匹配。
$_POST['first']
不与
相同$_POST['First']
答案 2 :(得分:0)
Mark Biek对此进行了修改,但作为一个小数调整,mysql_real_escape_string函数优于mysql_escape_string,因为它会影响与该连接相关联的字符集。