gpt4 book ai didi

php - 如何在 PHP 中通过 URL 传递多个变量?

转载 作者:行者123 更新时间:2023-11-29 04:31:13 25 4
gpt4 key购买 nike

我试图在 PHP 的 URL 中传递多个变量以获取一些信息,但我认为它不起作用。

$allowedFunctions = array(
'returnAllProducts',
'refreshCurrentProduct'

);


$IDNUM = $_GET[ 'idNum' ];


$functionName = $_GET[ 'func' ];

if( in_array( $functionName, $allowedFunctions ) && function_exists( $functionName ) )
{
$functionName();
}

然后我有 refreshCurrentProduct 函数:

function refreshCurrentProduct() { 
$dbh=mysql_connect ("DATABASE","USER", "PASS") or die('I cannot connect to the database because:'. mysql_error());

mysql_select_db("TABLE");

$query = "SELECT `ID` FROM `PRODUCTS`";

$result = mysql_query($query) or die('Query failed:'.mysql_error());

$DB_STOCK = mysql_query("SELECT `STOCK` FROM `PRODUCTS`") or die('Query failed:'.mysql_error());

$DB_SHORT = mysql_query("SELECT `MYNAME` FROM `PRODUCTS`") or die('Query failed:'.mysql_error());

$DB_LONG = mysql_query("SELECT `DESCRIPTION` FROM `PRODUCTS`") or die('Query failed:'.mysql_error());

$DB_PRICE = mysql_query("SELECT `PRICE` FROM `PRODUCTS`") or die('Query failed:'.mysql_error());

$DB_SHIP = mysql_query("SELECT `SHIPPING` FROM `PRODUCTS`") or die('Query failed:'.mysql_error());


$ID = mysql_result($result,$IDNUM,"ID");
$STOCK = mysql_result($DB_STOCK,$IDNUM,"STOCK");
$SHORT = mysql_result($DB_SHORT,$IDNUM,"MYNAME");
$LONG = mysql_result($DB_LONG,$IDNUM,"DESCRIPTION");
$PRICE = mysql_result($DB_PRICE,$IDNUM,"PRICE");
$SHIP = mysql_result($DB_SHIP,$IDNUM,"SHIPPING");

echo '
//echo $STOCK, $SHORT, etc....

';
}

我使用的 URL 是 products.php?func=refreshCurrentProduct&idNum=4

理论上,应该从第 4 行开始显示,然而,它只显示第一行的信息。如果我在函数内执行 $IDNUM=5,它将显示第 5 行,所以我传递信息的方式有问题。

此外,我如何创建(例如)$STOCK 而不必在 $DB_STOCK 中包含这么多代码?似乎必须有更好的方法......

最佳答案

你为什么不这样做(正如其他人已经提到的,$IDNUM 不在函数的范围内):

function refreshCurrentProduct() { 
$dbh=mysql_connect ("DATABASE","USER", "PASS") or die('I cannot connect to the database because:'. mysql_error());
mysql_select_db("TABLE");

// If $_GET['idNum'] is not a number use 0
$rowNumber = is_numeric($_GET['idNum']) ? $_GET['idNum'] : 0;

$query = "SELECT ID, STOCK, MYNAME, DESCRIPTION, PRICE, SHIPPING FROM `PRODUCTS`";
$result = mysql_query($query);

if(mysql_data_seek($result, $rowNumber)) {
// The result set has indeed at least $rowNumber rows

$row = mysql_fetch_assoc($result);

echo $row['ID'];
echo $row['STOCK'];
// ... etc ....
}
else {
echo "No such row!";
}
}

无需六次访问数据库!当然你需要添加错误处理。

顺便说一句。参数idNum是否与数据库中记录的ID相同?如果是这样,您甚至可以进一步简化:

function refreshCurrentProduct() { 
$dbh=mysql_connect ("DATABASE","USER", "PASS") or die('I cannot connect to the database because:'. mysql_error());
mysql_select_db("TABLE");

// If $_GET['idNum'] is not a number use 0
$id = is_numeric($_GET['idNum']) ? $_GET['idNum'] : 0;

$query = "SELECT ID, STOCK, MYNAME, DESCRIPTION, PRICE, SHIPPING FROM `PRODUCTS` WHERE ID = $id";
$result = mysql_query($query);

if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print";
return;
}

$row = mysql_fetch_assoc($result);

echo $row['ID'];
echo $row['STOCK'];
// ... etc ....
}

关于php - 如何在 PHP 中通过 URL 传递多个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2202569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com