使用php变量连接mysql select查询?

时间:2013-03-08 11:42:37

标签: php html mysql database

我试图将MySQL SELECT查询与PHP变量连接起来,但是出现了错误。 我发出错误的PHP语句是:

 $result=mysql_query("SELECT user_id,username,add FROM users WHERE username =".$user."AND password=".$add);

并且错误为:

( ! ) Notice: Undefined variable: info in C:\wamp\www\pollBook\poll\login.php on line 18
Call Stack

我不明白我错过了哪些代码。 当我编写没有WHERE子句的查询时,它可以正常工作。

5 个答案:

答案 0 :(得分:6)

您的代码无效的原因

您正在尝试使用尚未定义的变量$info。当您尝试使用未定义的变量时,您实际上没有将任何内容连接到字符串中,但是因为PHP是松散类型的,所以它会在您引用它的第二个时声明该变量。这就是您看到notice而不是fatal error的原因。您应该检查代码,并确保$info获取分配给它的值,并且在某个时候不会被另一个函数覆盖。但更重要的是,请阅读以下内容。

<小时/> 停止正在做的事


这很容易受到一种名为SQL Injection的攻击。我不打算告诉你如何连接SQL字符串。这是一种可怕的做法。

你应该在PHP中使用mysql函数。它们已被弃用。而是使用带有预准备语句的PHP PDO对象。这是一个相当不错的tutorial

实施例


在您阅读this tutorial之后,您将能够创建一个PDO对象,因此我将为您留下这一点。

下一步是使用prepare方法添加您的查询:

$PDO->prepare("SELECT * FROM tbl WHERE `id` = :id");
// Loads up the SQL statement. Notice the :id bit.
$actualID = "this is an ID";
$PDO->bindParam(':id', $actualID);
// Bind the value to the parameter in the SQL String.
$PDO->execute();
// This will run the SQL Query for you.

答案 1 :(得分:0)

虽然查询中没有使用$ info变量,但您需要更正查询:

$result=mysql_query("SELECT user_id,username,add FROM users WHERE username ='" . $user . "' AND password='" . $add . "'");

答案 2 :(得分:0)

首先从错误中看起来你的一个变量没有被定义。 .. 核实。第二个用'更安全的语法环绕你的参数。

答案 3 :(得分:0)

您在“AND”之前缺少空格,您应该使用其他答案中建议的单引号。

$result=mysql_query("SELECT user_id,username,add FROM users WHERE *username =".$user."AND* password=".$add);

更新:

echo $sql = "SELECT user_id,username,add FROM users WHERE username ='".$user."' AND password='".$add."'";
$result=mysql_query($sql);

答案 4 :(得分:-2)

这是因为您使用的变量可能没有在上面定义

首先初始化你的变量,或者它来自其他地方(POST或GET)然后检查 isset 方法

完整的代码将是

$user = 123; // or $user = isset($user)?$user:123;
$add = 123456; // or $add = isset($add)?$add:123456;

然后运行您的查询

$result=mysql_query("SELECT user_id,username,add FROM users WHERE username =".$user."AND password=".$add);