当我点击我网站上的链接时,我正在使用我的PHP脚本来调用该函数一次。
当我点击我网站上的链接连接到get-listing.php脚本时,它会同时调用tvguidecom和skyuk的功能,它将输出其中一个网页。
我认为问题出在这一行:
while ($row = mysql_fetch_array($result1))
{
tvguidecom($row);
skyuk($row);
}
以下是完整代码:
<?php
$errmsg_arr = array();
$errflag = false;
$link;
include ('simple_html_dom.php');
function db_connect()
{
define('DB_HOST', 'localhost');
define('DB_USER', 'mydbname');
define('DB_PASSWORD', 'mydbpassword');
define('DB_DATABASE', 'mydbname');
$errmsg_arr = array();
$errflag = false;
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link)
{
die('Failed to connect to server: ' . mysql_error());
}
$db = mysql_select_db(DB_DATABASE);
if(!$db)
{
die("Unable to select database");
}
}
function tvguidecom($row)
{
include ('tvguide.get-listing.php');
}
function tvguide2($row)
{
include ('skyuk.php');
}
db_connect();
function clean($var)
{
return mysql_real_escape_string(strip_tags($var));
}
$channels = "";
$id = "";
if(isset($_GET['channels']))
{
$channels = $_GET['channels'];
}
if(isset($_GET['id']))
{
$id = $_GET['id'];
}
if($errflag)
{
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
echo implode('<br />',$errmsg_arr);
}
else
{
$insert = array();
if(isset($_GET['channels']))
{
$insert[] = 'channels = \'' . clean($_GET['channels']) .'\'';
}
if(isset($_GET['id']))
{
$insert[] = 'id = \'' . clean($_GET['id']) . '\'';
}
if($channels && $id)
{
$qrytable1="SELECT id, channels, links FROM tvguide WHERE channels='$channels' && id='$id'";
$result1=mysql_query($qrytable1) or die('Error:<br />' . $qry . '<br />' . mysql_error());
while ($row = mysql_fetch_array($result1))
{
tvguidecom($row);
skyuk($row);
}
mysql_close();
exit;
}
else if(!$channels && ! $id)
{
$qrytable1="SELECT id, channels, links, streams FROM tvguide";
$result1=mysql_query($qrytable1) or die('Error:<br />' . $qry . '<br />' . mysql_error());
while ($row = mysql_fetch_array($result1))
{
echo "<p id='channels'>".$row["id"]. " " . $row["channels"]. "</p>";
echo '<a id="link1" href="http://example.com/get-listing.php?channels=' . $row["channels"] . "&id=" . $row["id"] . '">http://example.com/get-listing.php?channels=' . $row["channels"] . "&id=" . $row["id"] . '</a><br><br>';
//echo "<p id='links'>";
//echo '<a id="link1" href="http://example.com/get-listing.php?channels=' . $row["channels"] . "&id=" . $row["id"] . "'>http://example.com/get-listing.php?channels=" . $row["channels"] . "&id=" . $row["id"] .'>test</a></p>';
//echo '<a id="link1" href="http://example.com/get-listing.php?channels=';
echo '<a id="streams" href="' . $row['streams'] . '">Stream 1</a><br><br>';
}
}
}
?>
我想在我点击网站上的链接时一次调用一个函数。示例:我想调用tvguidecom函数来查看它是否会在我的get-listing脚本中输出数据,或者继续执行下一个函数并调用skyuk函数。
您能否告诉我一个例子,当我点击我网站上的链接时,我可以一次调用该功能一次?
答案 0 :(得分:1)
你能做的最好的事情就是让你的函数返回一个布尔值,这样你就可以检查是否应该继续这个过程。
我想函数tvguidecom
看起来像是:
function tvguidecom() {
// do something without return value
}
在其中添加一个返回值:
function tvguidecom() {
// do something
return $status;
}
因此,在您的代码中,您可以测试返回值
while ($row = mysql_fetch_array($result1))
{
if (tvguidecom($row)) {
skyuk($row);
}
}
注意:对于不同的主题,您不应再使用mysql扩展名,因为它已被弃用。你应该使用mysqli或pdo。
答案 1 :(得分:-1)
<强> TL; DR 强>
while ($row = mysql_fetch_array($result1))
{
// this ensures that `tvguidecom()` does its stuff, and `skyuk()`
// waits for results returned by the function.
skyuk(tvguidecom($row));
}
function tvguidecom($row) {
// do stuffs, returns original input $row;
return $row;
}
**另一种方法,callbacks。**
while ($row = mysql_fetch_array($result1))
{
tvguidecom($row, callback);
}
和fn:
tvguidecom(a, callback) {
// dostuffs and when complete
callback( result );
}
**语法可能不正确,请参阅提供的链接。希望这会有所帮助。