2009-08-05 13 views
0

これは機能します。PHP変数データベース通話中に合格していません

function get_distinct_size_for_bracelets() { 
    $sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='plastic' ORDER BY size"; 
} 

これは動作していないエラー報告でPHPの死者を停止しません。

function get_distinct_size_for_bracelets($myvalue) { 
    $sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type=".$myvalue." ORDER BY size"; 
} 

私は多くの設定を試していますが、何も動作していません。

答えて

2
function get_distinct_size_for_bracelets($myvalue) { 
    $sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".$myvalue."' ORDER BY size"; 
} 

SQLクエリでは、引き続きシングルクォートが必要です。

+0

感謝を。それはそれだった。私は配列を使ってデータベース呼び出しのどこかで単一引用符を持っています。だから私はなぜこの呼び出しに別の構文が必要か分からない。 – Jeff

+0

私はおそらくあなたが編集を誤解したと思います。 $ myvalueが "foo"と等しい場合、元のスクリプトを使用すると、SQLは "type = foo"になり、SQLでは "type属性がfoo属性と等しい"ことを意味します。私の編集では、SQLは "type = 'foo'"になります。これは "type属性が文字列 'foo'と等しいことを意味します。 –

2

渡された値を引用することを忘れないでください:

function get_distinct_size_for_bracelets($myvalue) 
{ 
$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type=".$myvalue." ORDER BY size"; 
} 

は次のようになります。

function get_distinct_size_for_bracelets($myvalue) 
{ 
$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".$myvalue."' ORDER BY size"; 
} 

typeで単一引用符を追加しました。

2

まだ一重引用符を使用する必要があります。だから、

$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".$myvalue."' ORDER BY size"; 
0

あなたはあなたの値をエスケープしていない

function get_distinct_size_for_bracelets($myvalue) { 
    $sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".$myvalue."' ORDER BY size"; 
} 
2

を試してみて、あなたはあなたの単一引用符を忘れている、それは私の推測だろう。試してください:

function get_distinct_size_for_bracelets($myvalue) { 
    $query = sprintf("SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='%s' ORDER BY size", 
     mysql_real_escape_string($myvalue)); 
} 

これにより、連結を使用するのではなく、エスケープされた値を文字列に渡すことができます。

0

MySQLのデータ型も異なります。そしてstringsも引用符で囲む必要があります。

$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".$myvalue."' ORDER BY size"; 

それともmysql_real_escape_string functionの付加的な使用とのより良い:

$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".mysql_real_escape_string($myvalue)."' ORDER BY size"; 
関連する問題