PHP Değişken Passing veritabanı arama çalışmıyor

6 Cevap php

This works.

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

This does not work and stops php dead with no error reporting.

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

Ben yapılandırmaları ve hiçbir şey çalışıyor bir dizi denedim.

6 Cevap

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

Hala SQL sorgusunda tek tırnak gerekir.

Geçti değerini alıntı hatırlıyorum:

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

Olmalıdır:

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

type de eklendi tek tırnak unutmayın.

Sen hala etrafında tek tırnak gerekir. Bu yüzden

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

Size değer kaçan değil ve sizin tek tırnak unutuyorsun, benim tahminim olurdu. Deneyin:

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

Bu birleştirme kullanarak karşıt olarak, dizeye kaçan bir değer girmesini sağlar.

denemek

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

MySQL çok farklı veri tipleri vardır. Ve strings da tırnak içine alınması gerekir:

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

Ya mysql_real_escape_string fonksiyonu ek kullanımı ile daha iyi:

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