PHP MySQL数据库问题

3

代码 1:

<?php
class dbConnect {
  var $dbHost = 'localhost',
  $dbUser = 'root',
  $dbPass = '',
  $dbName = 'input_oop',
  $dbTable = 'users';
  function __construct() {
    $dbc = mysql_connect($this->dbHost,$this->dbUser,$this->dbPass) or die ("无法连接到 MySQL : " . mysql_error());
    mysql_select_db($this->dbName) or die ("找不到数据库 : " . mysql_error());
  }
}
class User extends dbConnect {
  var $name;
  function userInput($q) {
    $sql = "INSERT INTO $this->dbTable set name = '".$q."'";
    mysql_query($sql) or die (mysql_error());
  }
}
?>

这是调用该类的代码:

<?php
include ('class.php');
$q=$_GET["q"];
$user = new User;
$user->userInput($q);
?>


代码 2:

<?php
$q = $_GET['q'];
$dbc=mysql_connect("localhost","root","") or die (mysql_error());
mysql_select_db('input_oop') or die (mysql_error());
$sql = "INSERT INTO users set name = '".$q."'";
mysql_query($sql) or die (mysql_error());
?>

我的 代码 1 将数据保存在我的数据库中:
alt text
保存多个!

我的 代码 2 将数据保存在我的数据库中:
alt text

我的代码 1 有什么问题?


1
你首先想让它做什么? - Jacob Saylor
1
除了你实际的问题之外:请记得在将每个传入的数据发送到数据库之前进行验证。否则,你的脚本将容易受到 SQL 注入攻击。例如,可以看一下 mysql_real_escape() - Ham Vocke
1
在Code1中,你是如何调用userInput()函数的? - harwig
您的第一个示例中是否有更多代码可供查看? - Nathan Osman
请再看一遍,我放置了调用userInput()函数的代码。 - Jorge
这个问题与http://stackoverflow.com/questions/2722932/ajax-html-php-question/2723902有关。在输入字段中,由'onkeypress'触发的糟糕构造的AJAX。 - Marc B
3个回答

5

好的,代码 1 存在 SQL 注入漏洞,因为你没有转义 $q。至于为什么会得到两条记录,这个问题并不是代码 1 中的问题,可能是调用 userInput 的代码中出现了问题。


0

0

它非常容易受到SQL注入攻击,尝试创建一个db.php文件,并在需要访问数据库的每个php文件开头使用require_once。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接