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数据库问题的主要内容,如果未能解决你的问题,请参考以下文章

版本5.6.5的php连接mysql问题

php对两个mysql数据表的修改问题?把表A的内容更新到表B里面。

关于php MySQL 连接的问题

PHP+MySQL存储数据出现中文乱码的问题

php关于mysql数据库简单回滚问题

[PHP]关于连接MySQL的问题