2012-03-18 20 views
1

私はうまくいくはずの非常に簡単なクエリを実行しています。私が前にやっていない唯一のことは、PHP変数をクエリのWHERE句に入れることです。変数$ Xは100という数値です。このクエリを実行すると、値0が返されます。明らかに愚かな何かをしていますか?mysqlクエリのWHERE句でPHP変数を使用する

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

私は、Webの周りに見ても、この試みた:

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

をしかし、これはまた、単に0

任意のアイデアを返しますか?前もって感謝します。

+1

PHPコードを掲載してください。 PHPのMySQLクエリは、ソケット経由でMySQLに送信される文字列です。文字列(クエリ)を構築するPHPコードがなければ、私たちはあなたを助けません。 – Basti

+0

MySQLクエリの変数の[PHP(int)]の重複可能性があります。セキュア?](http://stackoverflow.com/questions/8068234/php-int-for-variables-in-mysql-query-secure) – ChrisF

答えて

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

+0

@ user1262890が投稿を編集しました。私はSQL構文でセミコロンも見逃していました。 '{X X} ';"から '{$ X};"に変更されました。 – hjpotter92

-2

数値の周りに'を持つことはできません。 MySQLは文字列として扱います。

あなたがこれを行う必要があります代わりに

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

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

いいえ、MySQLは "5"として整数を渡すかどうか気にしません。それは単に使用する前に変換されます。あなたの研究をしてください! – Basti

+0

PHPはキャスト変数を必要としません – dAm2K

+0

キャスト '(int)$ val'はあなたの'整数 'として無意味です。' $ val'は 'string'連結のために直ちに' string'にキャストされます。 MySQLはPHP変数の型を知りません。クエリはmysqlに文字列として渡すだけです。 – Basti

0

例えば、PHPおよび使用して変数の $クエリ= "TABLE1から選択*どこ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値です。 usernameの前後に使用される記号です。これを得るには、escのすぐ下にあるキーを押す必要があります。

関連する問題