如何将用户数据传递到SQL查询?

时间:2017-11-19 04:25:22

标签: php mysql sql

我正在创建自己的应用程序。好的,让我们看一下代码......

<?php

define('DB_HOST', '127.0.0.1');
define('DB_NAME', 'sqltest');
define('DB_USER', 'sqltest');
define('DB_PASSWORD', 'sqltest');

$conn = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) 
    or die ("failed to connect to db" . mysql_error());

$db = mysql_select_db(DB_NAME, $conn) 
    or die ("failed to connect to db" . mysql_error());


$v1 = @_POST['uname'];
$v2 = @_POST['pass'];
$v3 = @_POST['email'];

$query = "INSERT INTO userinfo (Username, Password, Email, userid) 
  VALUES ('$v1', '$v2', '$v3', 'NULL')";
$data = mysql_query($query);

if ($data === TRUE) {
    echo "Registration successfully";
} else {
    echo "Success";
}

你能看到INSERT查询吗?我传递了一些变量: $ v1,$ v2等。这些变量是 $ _ POST 的变量,用于获取用户数据并插入 >数据进入数据库。

我在这里面临的问题是当我将数据(uname,pass,email和* userid [自动])注入我的html表单时。数据未在数据库中显示,但userid以增量形式更改)。我希望你明白这一点。

我没有成功,但我尝试了所有我认识的事情。我真的不知道它有什么问题。

任何人都可以纠正这个问题并提供解释吗?

感谢。

3 个答案:

答案 0 :(得分:3)

只是错字:

$v1 = @_POST['uname'];

$v2 = @_POST['pass'];
$v3 = @_POST['email'];

更改为:

$v1 = $_POST['uname'];

$v2 = $_POST['pass'];
$v3 = $_POST['email'];

&#34; @&#34; sign用于隐藏错误,如下所示:

$v1 = @$_POST['uname'];

答案 1 :(得分:3)

您的POST变量缺少$。尝试:

$v1 = @$_POST['uname'];
$v2 = @$_POST['pass'];
$v3 = @$_POST['email'];

顺便说一句,我不建议使用@来隐藏错误。

答案 2 :(得分:1)

您需要使用mysql_real_escape_string()来避免SQL注入。

文档可用here