MAMP上的MySQL表单无法正常工作

时间:2013-09-11 17:48:13

标签: php mysql sql mamp

问题是我只想插入全名/地址。我创建了一个包含以下列的用户表: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";?>

我能看到的所有事情都是在表格中插入一个空白条目。我在这里做错了吗?我想要的就是在这里成功地将表单数据插入到我的用户表中。

2 个答案:

答案 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']."')";

你也错过了数组键上的引号。

附加说明:

  1. 您的代码是 全开 到SQL注入,如果我输入我的名字Bobby'; DROP TABLE users;--猜猜会发生什么?
  2. mysql_*()函数已弃用,请花些时间学习PDO或MySQLi。他们有一些称为“参数化查询”的简洁术语,可以让你轻松地避免SQL注入,就像我上面提到的那样。
  3. 假设一个人的全名或地址对他们来说是独一无二的,那么就不要在“真实世界”的项目中这样做。
  4. 修改

    在字符串中嵌入数组的替代语法:

    $string = "Fee fie {$foo['bar']}.";