在解析/解释期间执行PHP函数?
问题描述:
我有一个简单的函数,可以切换表中的ON/OFF 1位列,我知道它工作正常,但似乎是执行两次。
在解析/解释期间执行PHP函数?
// toggleFunction($variable) toggles the value and returns the new result
// and is placed BEFORE the EXIT to see what value it returns. It is ommitted in the
// second block below because I only want it to run once, and then EXIT through
// showPage();
// #1
// TOGGLES ONCE CORRECTLY BUT THE PAGE IS NOT DISPLAYED BECAUSE IT DOES NOT REACH
// showPage();
...
if(isset($variable))
{
var_dump($class->toggleFunction($variable));
EXIT;
$user_data = $class->toggleFunction($variable);
$class->showPage($user_data);
}
// #2
// APPEARS TO TOGGLE TWICE AND DISPLAYS INCORRECT VALUE ON PAGE
...
if(isset($variable))
{
$user_data = $class->toggleFunction($variable);
$class->showPage($user_data);
}
function showPage($user_data)
{
echo $user_data;
EXIT;
}
function toggleFunction($id)
{
try{
$array = array($id);
$query = "UPDATE table SET ONOFF = ONOFF XOR 1 WHERE id=?;";
$stmt = $pdo_conn->prepare($query);
$stmt->execute($array);
$query = "SELECT ONOFF FROM table WHERE id=?;";
$stmt = $connection->prepare($query);
$stmt->execute($array);
$result = $statement->fetchAll();
return $result;
}
catch{
... }
}
调试:配售的var_dump()的,退出的显示,没有任何HTML格式得到正确的值,但随后的页面出现刷新(即使有绝对没有刷新调用)出现切换前的错误(原始)值。我认为这是因为它正在更新值两次(来回更改),所以看起来没有变化。其他调试技术显示,在第一次切换尝试失败后,该页面刷新期间该功能正常工作。
最后提到:我对解析和执行阶段(分配内存,分配变量等)的知识很低到平庸。我在之前的其他Web脚本活动中已经注意到了这一点,但从未发现它为什么在第一次传递期间似乎实际执行代码。最初,这导致我放置多个isset()块以确保$ _GET和其他变量实际存在,但这似乎不是问题。我还在需要时使用include_once()的脚本开头。
发布您的代码。如果你说'toggleFunction()'应该执行的动作执行两次,任何想帮助你的人都需要知道'toggleFunction()'在做什么。 – miken32
我觉得太多的代码只会混淆。将编辑。 – SilverFox
此外,它会帮助发布实际的代码,而不是“测试”代码(它甚至不会解析;你在那里缺少一个=)并解释输入,实际输出和预期输出。 – miken32