PHP странное поведение - переменные отображаются неустановленными, если только не print () ed - PullRequest
0 голосов
/ 14 июля 2020

Я отправляю форму в скрипт с таким кодом:

foreach($_POST as $k=>$v){

    if(!is_array($v)){$$k=dbenc($v);} else{$$k=$v;}
    $_SESSION["cat"][$k]=$v;
}

$url=vlookup("url","cat","cat=$cat"); 
// $cat is an integer which originated from the same field value and has been re-posted

"vlookup":

function vlookup($field,$table,$criteria){
global $link;
  if($table<>""){$from="FROM $table";}
  if($criteria<>""){$criteria="WHERE $criteria";}
  $r=mysqli_query($link,"SELECT $field as v $from $criteria") or die("VLOOKUP FAILED: $field $from $criteria".mysqli_error($link));
  $n=mysqli_num_rows($r);
  if($n>0){
    $row=mysqli_fetch_assoc($r) or die(mysqli_error($link));
    return $row["v"];
    }
}

Проблема в том, что

print($cat);exit;

дает ожидаемый результат, но $cat не отображается в выходных данных функции, например

showerror("$cat not found");

, и "vlookup", полагающийся на него, выдает ошибку предполагая, что после =

ничего нет. Печать запроса в отчете об ошибке подтверждает отсутствие значения $cat в функции vlookup.

Это не имеет смысла!

Любые мысли или советы приветствуются.

1 Ответ

0 голосов
/ 14 июля 2020

Согласно моему комментарию выше, проблема, похоже, заключается в использовании false в

if (strpos($value," ")!==false && ...)

после vlookup с использованием $cat

Если Я проверяю наличие пробелов без использования !==false в сочетании с другими тестами, переменные Dynami c отображаются как обычно. Не уверены, следует ли этого ожидать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...