【问题标题】:linking and sending form values to mysql database?将表单值链接并发送到 mysql 数据库?
【发布时间】:2014-05-19 06:48:07
【问题描述】:

我的html代码:

<form action="send_post.php" method="post">
    <input type="submit" value="Login" />
</form>

PHP 代码:

<?php
$con = mysqli_connect("","","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
else
{
// echo('Connected with Mysql');
}
@mysql_select_db("a", $con);// connect to database db_name
if (isset($_POST['Submit']))
{
$email=$_POST['email']; 
 $pass=$_POST['pass']; 
$sql_query="INSERT INTO formdata (email, pass) VALUES('$email', '$pass')";}
?>

数据库名称:mysql 表名:formdata

为什么它不起作用?在第二行中,我首先使用了“本地主机”,但收到错误,因此我将其删除。

【问题讨论】:

  • 危险:你容易受到SQL injection attacks的影响,你需要defend自己。
  • (1) 不要隐藏错误消息。 @mysql_select_db("a", $con); (2) 向我们展示表单的所有 HTML。 (3) 定义“不工作”
  • 您不能混合使用 MySQL API。将错误报告添加到文件顶部error_reporting(E_ALL); ini_set('display_errors', 1); --- 另外,您的条件语句将失败。它基于寻找您的提交按钮被命名为Submit,它不是。
  • 我还注意到您可能以纯文本形式存储密码。不建议这样做。使用 CRYPT_BLOWFISH 或 PHP 5.5 的 password_hash() 函数。对于 PHP password_hash() compatibility pack.

标签: php mysql sql forms


【解决方案1】:
  1. 您使用mysqli_ API 连接到您的数据库,然后测试错误并尝试使用mysql_ API 选择数据库。选择一个并坚持下去。 (不要选择mysql_,它已被弃用)。
  2. 只有在提交的数据中有Submit 数据项时才运行表单处理代码。您无法使用 name="Submit" 进行表单控制,因此这永远不会发生。
  3. 您的表单处理代码预计提交的数据中有 emailpass 数据,但您的表单没有具有这些名称的字段。
  4. 将 SQL 查询构造为字符串并将其存储在变量中不足以对数据库执行任何操作。您必须实际将其发送到数据库服务器。这将在您当前的方法中使用mysqli_query,但您应该切换到prepared statements

【讨论】:

    猜你喜欢
    • 2011-07-02
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    相关资源
    最近更新 更多