问题是我只想插入全名/地址。我创建了一个包含以下列的用户表:id(主要),全名(唯一),地址(唯一)。
以下是代码:
<?php $username = "root";
$password = "artislife23";
$hostname = "localhost";
//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
//select a database to work with
$selected = mysql_select_db("test",$dbhandle)
or die("Could not select examples");?>
<body>
<div class="container">
<div class="content">
<h1><?php if(($selected!=null)){
echo "Database is on lock.";}
if(($dbhandle!=null)){
echo "Connected to MySQL<br>";
}?></h1>
<form method="post" action="input.php">
<tr><td>Name</td><td><input type="text" name="fullname" size="20"></td></tr>
<tr><td>Address</td><td><input type="text" name="address" size="40"></td></tr>
<tr><td></td><td align="right"><input type="submit" value="Submit"></td>
这是input.php
<?php
$postr="INSERT INTO users
(fullname, address) VALUES('$_POST[fullname]','$_POST[address]')";
$result = mysql_query($postr);
echo "$result";?>
我能看到的所有事情都是在表格中插入一个空白条目。我在这里做错了吗?我想要的就是在这里成功地将表单数据插入到我的用户表中。
答案 0 :(得分:0)
$_POST['fullname']
你的帖子中缺少引号。
答案 1 :(得分:0)
它不起作用的原因是PHP没有像变量一样扩展字符串中的数组,而没有一些我永远无法记住的奇怪语法。变化:
$postr="INSERT INTO users (fullname, address) VALUES('$_POST[fullname]','$_POST[address]')";
要:
$postr="INSERT INTO users (fullname, address) VALUES('".$_POST['fullname']."','".$_POST['address']."')";
你也错过了数组键上的引号。
附加说明:
Bobby'; DROP TABLE users;--
猜猜会发生什么?mysql_*()
函数已弃用,请花些时间学习PDO或MySQLi。他们有一些称为“参数化查询”的简洁术语,可以让你轻松地避免SQL注入,就像我上面提到的那样。在字符串中嵌入数组的替代语法:
$string = "Fee fie {$foo['bar']}.";