MySQL查询无法识别PHP变量

时间:2019-04-25 16:12:17

标签: php

我正在处理一个SQL查询,该查询根据用户ID号外键选择结果,如果相关表中有任何匹配的条目,则显示结果。当我尝试在WHERE子句中使用PHP变量时,似乎SQL查询根本无法识别任何值,即使我打印了该变量,也确实有一个值。

我尝试使用"'. $variable .'"' . $variable . '更改查询,但是仍然得到相同的结果。这是我的代码:

$usernum = intval($_SESSION['usernum']);
$query = "SELECT * FROM dinosaurs WHERE UserNum = '$usernum'"; 

当我手动输入变量时(例如"SELECT * FROM dinosaurs WHERE UserNum = '6'";,它可以工作,但是当我尝试运行此查询时,会得到以下结果:

SELECT * FROM dinosaurs WHERE UserNum = ''
returned 0 records. 

看起来变量只是在SQL语句中显示空白值?我将如何识别变量的值?

编辑:解决方案 我想到了!这是一个愚蠢的错误,我在另一个函数内部而不是全局变量中声明了变量,因此我将声明移至正确的函数,如下所示:

  // print_r($json);
  $usernum = intval($_SESSION['usernum']);
  }

所以这表明我应该更加注意自己的代码:)

1 个答案:

答案 0 :(得分:0)

这是我的原始代码:

session_start();

if (isset($_SESSION['username'])) {
    $firstname = htmlspecialchars($_SESSION['firstname']); 
    $usernum = intval($_SESSION['usernum']);
    $username = $_SESSION['username'];
} else echo "<script> window.location.assign('uhoh.html'); </script>";
require_once 'connect.php';
require_once 'pretty_json.php';

submitQuery($conn, $json);

$conn->close();

我在原始的if语句中而不是全局地声明了$usernum变量。因此,当我尝试在SubmitQuery函数中访问它时,它没有设置任何内容。

要解决此问题,我刚刚在SubmitQuery函数的开头声明了$usernum变量。