2012-03-18 130 views
1

我正在运行一个非常简单的查询,我认为它应该可以工作。我之前没做过的唯一事情是在查询的WHERE子句中放置一个php变量。变量$ X是一个数值,比方说100。当我运行这个查询时,我得到的返回值为0。我做的事显然很愚蠢吗?在mysql查询的WHERE子句中使用php变量

SELECT generator_64k.n 
FROM generator_64k 
WHERE generator_64k.n<= '$X' 

我看各地的网络,也试过这样:

SELECT generator_64k.n 
FROM generator_64k 
WHERE generator_64k.n<= '" . $X . "' 

但是,这也只是返回0

任何想法?提前致谢。

+1

你可以请张贴PHP代码吗?在PHP中,MySQL查询只是通过套接字发送给MySQL的字符串。如果没有构造字符串的PHP代码(您的查询),我们无法帮助您。 – Basti 2012-03-18 17:45:36

+0

MySQL查询中变量的[PHP(int))可能重复。安全?](http://stackoverflow.com/questions/8068234/php-int-for-variables-in-mysql-query-secure) – ChrisF 2013-03-05 19:09:28

回答

1

试试这个,或者发布你的PHP代码。

<?php 
$X = 100; 
$query = "SELECT n FROM generator_64k WHERE n <= $X"; 
$result = mysql_query($query); 
if (!$result) { 
    echo ('Query error: ' . mysql_error()); 
} 
2
$query = "SELECT generator_64k.n FROM generator_64k WHERE generator_64k.n<= {$X};"; 
+0

不幸的是,这会返回一个错误:你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,在第1行 – user1262890 2012-03-20 02:32:10

+0

@ user1262890编辑该帖子的''附近使用正确的语法。我也错过了SQL语法中的分号。从'{$ X}“;'改为'{$ X};”;' – hjpotter92 2012-03-20 04:56:45

-2

您的数值不能有'。 MySQL会将它视为字符串。

你应该这样做,而不是

" WHERE number <= " . (int)$val . " .. " 

// or (but not recommended due to security problem) 
" WHERE number <= $val " 
+0

不,MySQL不关心你是否将整数作为'5''传递。它将在使用前简单地转换。做你的研究! – Basti 2012-03-18 17:59:24

+0

php不需要铸造变量 – dAm2K 2012-03-18 19:20:16

+0

铸造'(int)$ val'是毫无意义的,因为你的整数''val'由于'string'连接而被立即转换回'string'。 MySQL不会知道PHP变量的类型。你只需将查询作为字符串传递给mysql。 – Basti 2012-03-18 20:14:47

0

php和使用变量的E.g $查询= “从表1中选择*其中COL1 < =” $ MYVARIABLE。

$ result = mysql_query($ query);

0

mysql_query()函数对错误返回false(false == 0),否则返回一个资源。 mysql_query不返回结果集中的值。您必须使用mysql_fetch_assoc或类似的东西来获取结果集中的行。

此外,请确保您将查询封装在双引号中,以便PHP可以扩展变量$X

使用mysql_error从上次调用mysql_query获取错误。

0

使它像这样

$sql="select `username` from `users` where id='$newid';"; 
mysql_query($sql); 

这里$ NEWID是int值。 用户名前后使用的符号,要得到这个,你必须按esc键下方的键。