【发布时间】:2014-12-19 18:17:23
【问题描述】:
我创建了一个 MySQL 数据库,目前只有一个名为“users”的表。字段包括:id、first_name、last_name、用户名、电子邮件、关于、位置、网站。我正在使用 PHP 通过自动提交的 HTML 表单插入数据。
插入没有问题,但让我感到困惑的是,当通过 HTML 表单进行插入时,里面的数据是不可搜索的。例如,如果我尝试执行搜索查询以查找具有匹配电子邮件或用户名的用户,则即使该用户确实存在于数据库中,也找不到该用户。只有当我使用他的 ID(这是一个自动增量并由 MYSQL 自动插入)搜索用户时,搜索查询才会找到该用户。下面是我的代码。我已经剥离了从 CSS 到验证和安全功能的所有内容,以排除可能导致这种情况的因素。
<?php
if (isset($_POST['submit'])) {
//$user = new User();
$first_name =$_POST["first_name"];
$last_name =$_POST["last_name"];
$email =$_POST["email"];
$username =$_POST["username"];
$connection=mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
$sql = "INSERT INTO users ";
$sql .= "(first_name, last_name, email, username) ";
$sql .= "VALUES ('{$first_name}', '{$last_name}', '{$email}', '{$username}')";
$result = mysqli_query($connection, $sql);
if ($result) {
echo "Insertion succeed";
} else {
echo "Insertion failed";
}
}
?>
<h2>Sign up</h2>
<form action="sign_up2.php" method="post"/>
<ul>
<li>
First_name: <input type="text" name="first_name" value=" "/>
</li>
<li>
Last_name:<input type="text" name="last_name" value=" "/>
</li>
<li>
Email:<input type="text" name="email" value=" "/>
</li>
<li>
Username:<input type="text" name="username" value=" "/>
</li>
<li>
Password:<input type="password" name="password" value=""/>
</li>
<li>
<input type="submit" name="submit" value="Sign in" />
</li>
</ul>
</form>
另一方面,如果数据直接通过 MSQL 查询脚本插入到数据库中,避免了 HTML 表和 $_POST 超级全局变量,像这样......
$connection=mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
$sql = "INSERT INTO users ";
$sql .= "(first_name, last_name, email, username) ";
$sql .= "VALUES ('John', 'Doe', 'John@gmail.com', 'john_d')";
$result = mysqli_query($connection, $sql);
if ($result) {
echo "Insertion succeed";
} else {
echo "Insertion failed";
}
....所有字段中的所有数据都可用于查找和匹配任何现有用户:电子邮件、用户名、名字等,而不仅仅是我之前提到的“ID”字段插入是通过 HTML 表单进行的。
我使用的是 WAMP 服务器 2.4,MySQL 版本是 5.6.12,PHP 版本是 5.4.12
我希望我对问题的描述很清楚,主要是希望您能帮助我弄清楚为什么会发生这种情况。
非常感谢!
阿图罗。
【问题讨论】: