0

我正在尝试将 MySQLSELECT查询与 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子句的查询时,它工作正常。

4

5 回答 5

6

您的代码不起作用的原因

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


停止你正在做的事情


这很容易受到一种称为SQL 注入的攻击。我不会告诉你如何连接 SQL 字符串。这是可怕的做法。

应该在 PHP 中使用 mysql 函数。它们已被弃用。而是使用 PHP PDO 对象和准备好的语句。这是一个相当不错的教程

例子


阅读完本教程后,您将能够制作 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.
于 2013-03-08T11:45:45.023 回答
1

您在“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);
于 2013-03-08T12:02:06.917 回答
0

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

$result=mysql_query("SELECT user_id,username,add FROM users WHERE username ='" . $user . "' AND password='" . $add . "'");
于 2013-03-08T11:45:06.010 回答
0

首先从错误来看,您的变量之一似乎未定义。.. 核实。其次,用 ' 将参数括起来以获得更安全的语法。

于 2013-03-08T11:45:35.460 回答
-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);
于 2013-03-08T11:49:43.323 回答