Глюк MySQL5 (или PHP5)

Uprinter

Новичок
Глюк MySQL5 (или PHP5)

Имеется код:

PHP:
if ($_SERVER["PHP_SELF"] != "/") {
	$result = @mysql_query("SELECT id FROM ".VISITS_SITE_SECTIONS." WHERE INSTR('".$_SERVER["PHP_SELF"]."', template) != 0");
	$row = mysql_fetch_array($result);
	$current_section_id = $row["id"];
}
Запрос железно возвращает целочисленное значение, то есть переменной $current_section_id присваивается числовое значение.

После чего значение переменной $current_section_id заносится в базу:

stat_section='$current_section_id' (типа поля stat_section - smallint(5) UNSIGNED).

Прикол в том, что в базу при этом всегда заносится 0 (ноль). Но если сделать такой финт: сразу же после $current_section_id = $row["id"]; написать, например, $current_section_id = 7;, но значение заносится нормально.

И прикол номер 2: присвоение $current_section_id = $row["id"]; и занесение в базу будет работать нормально, если в первом запросе вместо $_SERVER["PHP_SELF"] напрямую руками прописать путь. При этом значение $_SERVER["PHP_SELF"] возвращается также абсолютно корректно!

Версия MySQL: 5.0.18-log
PHP: 5.1.2

В чем тут может быть глюк? Может кто сталкивался?
 

Romantik

TeaM PHPClub
Запрос железно возвращает целочисленное значение, то есть переменной $current_section_id присваивается числовое значение.
нет, возвращает значение, а ты не привел к числовому типу.
 

Uprinter

Новичок
settype($current_section_id, "integer");

Пробовал и к типу приводить - безполезно.
 

Andreika

"PHP for nubies" reader
Uprinter
$row = mysql_fetch_array($result);
$current_section_id = $row["id"];
var_dump($row,$current_section_id);
 

Uprinter

Новичок
$current_section_id без преобразований имеет тип string. Разве это должно мешать занесению в базу?
Впрочем приведение к integer тоже ничего не дает.

var_dump($row,$current_section_id); говорит следующее:

array(2) { [0]=> string(1) "6" ["id"]=> string(1) "6" } string(1) "6"
 

.des.

Поставил пиво кому надо ;-)
Ага, пройти по ссылке это считаете лишним.. ну ну ..

Вот пока следующий код
$result = @mysql_query("SELECT id FROM ".VISITS_SITE_SECTIONS." WHERE INSTR('".$_SERVER["PHP_SELF"]."', template) != 0");
$row = mysql_fetch_array($result);
не станет примерно таким
PHP:
$q = "SELECT id FROM ".VISITS_SITE_SECTIONS." WHERE INSTR('".mysql_real_escape_string($_SERVER["PHP_SELF"])."', template) != 0";
if( $result = mysql_query($q) ) {
  if(mysql_num_rows($result)==1)  {
    $row = mysql_fetch_array($result);
    ...
  }
  else {
   ...
  }

}
else {
   exit(mysql_error($result)."\nQuery: ".$q);
}
долго будете еще заниматься плясками с бубном.
 
Сверху