我正在尝试从函数返回变量。我有下面的函数,它将一个postid插入数据库。我需要将postid的值返回到另一个页面。
forum.php - 功能在哪里。
function newTopic(){
// Get the POST data
global $ir;
$postid = mysql_insert_id();
mysql_query("UPDATE forum_topics SET post_id='$postid' WHERE topic_id='$topicid'");
// No error found and the update was succesful - Return success!
return 100;
return $postid;
}
newtopic.php - 我需要$postid
变量的地方。
if($_POST)
{
$newTopic = $forum->newTopic();
/*
* Return codes:
* 100: Success
*/
switch($newTopic)
{
//If no error = success.
case 100:
$success = 'You have successfully created the topic.';
$issuccess = 1;
$stop = true;
break;
}
$checkerror = $error;
$checksuccess = $success;
}
if($checksuccess){
$contents.="
".alert("success","$success")."";
refresh("3","/forum/t$id-$postid");
}
正如您所看到的,我正在尝试使用函数newTopic()中的$ postid变量。虽然,$ postid变量是空的。
如何从forum.php中的函数newTopic.php获取值到newtopic.php?
答案 0 :(得分:4)
使用时
return 100;
您的代码永远不会看到
return $postid;
您可以使用此代码返回
return array("code"=>"100","postid"=>$postid);
现在在new_topic.php中使用如图所示的代码
if($_POST)
{
$newTopic = $forum->newTopic();
/*
* Return codes:
* 100: Success
*/
switch($newTopic['code'])
{
//If no error = success.
case 100:
$success = 'You have successfully created the topic.';
$issuccess = 1;
$stop = true;
break;
}
$checkerror = $error;
$checksuccess = $success;
}
if($checksuccess){
$contents.="
".alert("success","$success")."";
refresh("3","/forum/t$id-$newTopic['postid']");
}
答案 1 :(得分:1)
在返回$ postid变量之前,您的代码看起来返回值100。 那是错的。你的代码会在第一次返回时退出函数。
注释“//返回100;”
OR返回一个数组。你不能像你那样返回两个值。 而不是做
return 100;
return $postid;
待办事项
//return 100;
return array("successs"=>100,"id"=>$postid);
然后使用您的$ newTopic变量作为以下内容: 在开关中:
switch($newTopic['success'])
在其他地方使用postId
$newTopic['id']
答案 2 :(得分:1)
尝试参考,如下面的代码
function newTopic(&$postid){
// Get the POST data
global $ir;
$postid = mysql_insert_id();
mysql_query("UPDATE forum_topics SET post_id='$postid' WHERE topic_id='$topicid'");
// No error found and the update was succesful - Return success!
return 100;
}
....... //some codes
$postid = null;
newTopic($postid);
$my_postId = $postid; //Now you have your post ID
或者你存在像
这样的代码if($_POST)
{
$last_postid = null;
$newTopic = $forum->newTopic($last_postid );
/*
* Return codes:
* 100: Success
*/
switch($newTopic)
{
//If no error = success.
case 100:
$success = 'You have successfully created the topic.';
$issuccess = 1;
$stop = true;
$postid = $last_postid;
break;
}
$checkerror = $error;
$checksuccess = $success;
}
if($checksuccess){
$contents.="
".alert("success","$success")."";
refresh("3","/forum/t$id-$postid");
}
编辑:呼叫时间传递参考已修复。
答案 3 :(得分:0)
如果你想要返回两个值,你不能只写两个回报。
有几个选项可以返回更多值。一个是使用数组:
return array(100, $postId);
和
list($status, $postId) = $forum->newTopic();
您也可以使用关联数组作为s.d建议。
但是,由于您的一个变量只包含状态,因此在操作失败的情况下也可以使用异常。