MySQL无法接受数字变量

时间:2015-04-13 00:05:08

标签: php mysql mysqli

我面对这个奇怪的问题。下面的代码不起作用。我只从0获得Count。我的12行的预期输出为12

echo $userid = $row['userid']; // output is 130

mysqli_query($con, "SELECT COUNT(*) AS count FROM client WHERE userid = $userid");

但是,如果我将$userid变量替换为integer,它将起作用:

echo $userid = $row['userid']; // output is 130

mysqli_query($con, "SELECT COUNT(*) AS count FROM client WHERE userid = 130");

更新

$row['userid']值取自其他列,列类型为int

我需要在查询中使用变量。请帮助我,并提前感谢。

更新

所以我使用下面的代码进行测试,我将130分配给$test。有用。

$test = 130;
mysqli_query($con, "SELECT COUNT(*) AS count FROM client WHERE userid = $test");

2 个答案:

答案 0 :(得分:0)

我猜它与字符串类型的参数有关,你需要一个整数。还要算上'是一个保留字,可能会导致错误,而不是由您的代码处理。需要反复提示。

我建议使用预备语句。这是更安全,更好的做法,希望能解决您的问题。例如:

$userid = $row['userid']; 

/* create a prepared statement */
if ($stmt = mysqli_prepare($link, "SELECT COUNT(*) AS `count` FROM client WHERE userid =?")) {

    /* bind parameters for markers */
    mysqli_stmt_bind_param($stmt, "i", $userid);

    /* execute query */
    mysqli_stmt_execute($stmt);

    /* bind result variables */
    mysqli_stmt_bind_result($stmt, $district);

    /* fetch value */
    mysqli_stmt_fetch($stmt);

文档: http://php.net/manual/en/mysqli.prepare.php

答案 1 :(得分:0)

这很尴尬:

echo $userid = $row['userid']; // output is 130

继续并摆脱echo声明。