PHP代码执行序列
我试图执行一些php代码行,但似乎没有按要求的顺序执行。以下是一段代码片段:-PHP代码执行序列,php,Php,我试图执行一些php代码行,但似乎没有按要求的顺序执行。以下是一段代码片段:- if( !empty($_POST['val']) ) { $val = Get_Val($sid, $_POST['val'], $lnk); if($val) { echo "<br />Here Val
if( !empty($_POST['val']) )
{
$val = Get_Val($sid, $_POST['val'], $lnk);
if($val)
{
echo "<br />Here Value : " . $val;
}
else
{
echo "Invalid Value.";
}
}
if(!empty($\u POST['val']))
{
$val=Get_val($sid,$_POST['val'],$lnk);
如果($val)
{
echo“
此处的值:.$val;
}
其他的
{
回显“无效值”;
}
}
当我在函数Get_Val()中返回之前回显该值时,它会显示一组有效参数的正数,这意味着If条件为true,但当我执行代码时,Else部分正在执行。虽然输出是按顺序显示的,但它们并不一致。我希望我已经把问题说清楚了。
感谢您的任何帮助。谢谢
下面是Get_Val()函数:-
function Get_Val( $sid, $a, $link)
{
//check is name is already present in table
$query = "SELECT val FROM store WHERE name = \"" . $a . "\""; //val is auto incremented in sql
$result = mysql_query( $query ,$link ) or die( mysql_error());
if($result)
{
$count = mysql_num_rows($result);
if( $count == 0 ) //insert name and the return val
{
$query_x = "INSERT INTO store(name) VALUES('" . $a . "')";
$result = mysql_query( $query_x ,$link ) or die( mysql_error());
if($result)//If new name inserted then return the 'val'
{
Get_Val($sid, $a,$link);
}
}
else
{
$row = mysql_fetch_assoc( $result );
echo "Val in Get_Val : " . $row['val'];
return $row['val'];
}
}
else
{
echo "Unexpected Error Occured...!!!";
exit(0);
}
}
函数Get_Val($sid,$a,$link)
{
//检查表中是否已存在名称
$query=“从name=\”“.$a.\”“;//val在sql中自动递增
$result=mysql\u query($query,$link)或die(mysql\u error());
如果($结果)
{
$count=mysql\u num\u行($result);
if($count==0)//插入名称和返回值
{
$query_x=“插入存储(名称)值(“$a”)”;
$result=mysql\u query($query\u x,$link)或die(mysql\u error());
if($result)//如果插入了新名称,则返回“val”
{
获取值($sid,$a,$link);
}
}
其他的
{
$row=mysql\u fetch\u assoc($result);
在Get_Val:.$row['Val']中回显“Val”;
返回$row['val'];
}
}
其他的
{
echo“发生意外错误…!!!”;
出口(0);
}
} 这是怎么回事
if( $count Val in Get_Val : " . $row['val'];
return $row['val'];
}
是否确定$\u POST['val']是存储在数据库中的有效值?Get\u val在$count==0时不返回值。在递归调用之前添加return语句。像这样:
...
if( $count == 0 ) //insert name and the return val
{
$query_x = "INSERT INTO store(name) VALUES('" . $a . "')";
$result = mysql_query( $query_x ,$link ) or die( mysql_error());
if($result)//If new name inserted then return the 'val'
{
return Get_Val($sid, $a,$link);
}
}
...
上传
Get_Val()
的代码,也可以尝试if(isset($Val))
。你确定Get\u Val()
正在返回一个值吗?请确保清除$\u POST['Val'],否则,sql注入是肯定的。我已经纠正了它,我无法第一次正确地发布它。在插入新值后,你不应该使用递归,这是在浪费cpu周期和无效的sql查询,只需返回上次插入的ID这里有一种情况,因为我不是手动插入它,它是自动递增的,我只是插入'name'而'val'是自动更新的。即使我试图获取表中的最后一个“val”,它也需要另一个SQL查询。因此,无法删除查询。请帮助我在不使用递归的情况下获取新插入的“val”。如果我删除递归并使用另一个查询呢?us mysql_insert_id(),它将返回新增加的idLet me try,感谢迄今为止的帮助。:-)