PHP переменная передача не работает в вызове базы данных - PullRequest
0 голосов
/ 05 августа 2009

Это работает.

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

Я перепробовал несколько конфигураций и ничего не работает.

Ответы [ 6 ]

2 голосов
/ 05 августа 2009

Вы не избегаете своей ценности и забываете свои одинарные кавычки, это было бы моим предположением. Попробуйте:

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

Это позволяет передавать экранированное значение в строку, а не использовать конкатенацию.

2 голосов
/ 05 августа 2009

Вам все еще нужны одинарные кавычки. Так

$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".$myvalue."' ORDER BY size";
2 голосов
/ 05 августа 2009

Не забудьте процитировать переданное значение:

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 голосов
/ 05 августа 2009
function get_distinct_size_for_bracelets($myvalue) {
    $sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".$myvalue."' ORDER BY size";
}

Вам все еще нужны одинарные кавычки в запросе SQL.

0 голосов
/ 05 августа 2009

MySQL также имеет разные типы данных. И строки также должны быть заключены в кавычки:

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

Или лучше с дополнительным использованием функции mysql_real_escape_string :

$sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".mysql_real_escape_string($myvalue)."' ORDER BY size";
0 голосов
/ 05 августа 2009

1001 * попробовать *

function get_distinct_size_for_bracelets($myvalue) {
    $sql = "SELECT DISTINCT size FROM mytable WHERE id = 27 AND type='".$myvalue."' ORDER BY size";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...