PHP MySQL数据库问题
Posted
技术标签:
【中文标题】PHP MySQL数据库问题【英文标题】:PHP MySQL database problem 【发布时间】:2011-02-13 00:07:20 【问题描述】:代码 1:
php 类 dbConnect var $dbHost = 'localhost', $dbUser = 'root', $dbPass = '', $dbName = 'input_oop', $dbTable = '用户'; 函数 __construct()$dbc = mysql_connect($this->dbHost,$this->dbUser,$this->dbPass) or die ("Cannot connect to MySQL :" .mysql_error()); mysql_select_db($this->dbName) or die ("Database not Found :" .mysql_error()); 类用户扩展 dbConnect 变量$名称; 功能用户输入($q) $sql = "INSERT INTO $this->dbTable set name = '".$q."'"; mysql_query($sql) 或死 (mysql_error()); ?> 这是调用类的代码。 userInput($q); ?>
代码 2:
我的 代码 1 保存在我的数据库中: 保存多个! 我的代码 2 保存在我的数据库中:我的代码 1 有什么问题?
【问题讨论】:
你希望它首先做什么? 除了您的实际问题:请记住在将每个传入数据发送到数据库之前对其进行验证。否则,您的脚本将易受 SQL 注入攻击。以mysql_real_escape()
为例。
你是如何调用 Code1 中的 userInput() 函数的?
我们可以从您的第一个示例中看到更多代码吗?
再看一遍。我把代码调用了userInput()函数。
【参考方案1】:
关于 SQL 注入漏洞,我建议对 PDO 使用准备好的语句。它易于使用且非常安全。
更多信息:http://php.net/manual/en/pdo.prepared-statements.php
【讨论】:
【参考方案2】:它对 SQL 注入非常开放,尝试拥有一个 db.php 文件,并在每个需要 db 的 php 文件的开头只 require_once。
【讨论】:
【参考方案3】:好吧,代码 1 对 SQL 注入开放,因为您没有转义 $q。至于为什么会得到两条记录,这个问题不在代码1中,而可能在调用userInput
的代码中。
【讨论】:
以上是关于PHP MySQL数据库问题的主要内容,如果未能解决你的问题,请参考以下文章