Я был включен в nstrees из другого вопроса и работал через скрипт. В последний раз он был обновлен в 2005 году и опирался на некоторые вещи, которые с тех пор, по-видимому, были устаревшими, как HTTP_POST_VARS
, о которых я не знал сразу, поскольку я занимаюсь PHP всего лишь немногим меньше года.нужна некоторая простая помощь, понимающая немного кода pre-PHP5
В любом случае, стиль кодирования кажется странным моим новобранец глаз, и я хотел бы второе мнение о том, что часть этой функции делает:
// returns the first node that matches the '$whereclause'.
// The WHERE clause can optionally contain ORDER BY or LIMIT clauses too.
function nstGetNodeWhere ($thandle, $whereclause) {
$noderes['l'] = 0;
$noderes['r'] = 0;
$res = mysql_query("SELECT * FROM ".$thandle['table']." WHERE ".$whereclause);
if (!$res) { // problem area 1
_prtError();
} else {
if ($row = mysql_fetch_array($res)) { // problem area 2
$noderes['l'] = $row[$thandle['lvalname']];
$noderes['r'] = $row[$thandle['rvalname']];
}
}
return $noderes;
}
В коде выше я отметил пятно я не совсем уверен, как // problem area x
, все остальное - оригинальный сценарий.
Что касается PA1, это просто проверка того, был ли запрос успешно запущен?
И PA2, NetBeans дает мне предупреждение «Возможное случайное назначение, задания в условиях следует избегать». ... поэтому я быстро изменил это с =
до ==
и, разумеется, сломал скрипт, хе.
Думать об этом, я думаю, это просто еще одна проверка ошибки на $res
, на этот раз, чтобы убедиться, что некоторые данные были действительно возвращены?
Наконец, это странный PHP, или я просто слишком зеленый, чтобы его проверить?
Спасибо, dude (tte) s!
Благодарим за подробное объяснение PA2. Это был единственный из опубликованных 3, которые действительно помогли мне «получить». Я не понимал, что строительство было фактически двухступенчатым (назначить, проверить). Теперь имеет смысл! – Drew