2015-04-13 67 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聲明。