2015-04-13 62 views
0

我正面临着这个奇怪的问题。下面的代码不起作用。我只从Count得到0。从我的12行预计输出为12Mysql不能接受数字变量

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"); 

UPDATE:

$row['userid']值从与列类型为int其它塔中取出。

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

UPDATE:

所以我下面,我分配到130$test代码测试。有用。

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

为了协助您的调试,您是否尝试过'echo“SELECT COUNT(*)AS count FROM client WHERE userid = $ userid”'? –

+1

我建议将用户标识绑定到准备好的语句。除此之外,这将消除解决这个奇怪问题的需要。 –

+0

另外,你是什么意思的“不工作/将工作”? –

回答

0

我想它与参数是字符串类型,你需要一个整数有关。 'count'是一个保留字,可能会导致错误,而不是由您的代码处理。还需要反驳这一点。

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

$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

0

这是非常尴尬:

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

继续前进,摆脱echo声明。