Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中通过URL传递多个变量?_Php_Mysql_Url - Fatal编程技术网

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

如何在php中通过URL传递多个变量?,php,mysql,url,Php,Mysql,Url,我试图在PHP中传递URL中的多个变量以获取一些信息,但我认为它不起作用 $allowedFunctions = array( 'returnAllProducts', 'refreshCurrentProduct' ); $IDNUM = $_GET[ 'idNum' ]; $functionName = $_GET[ 'func' ]; if( in_array( $functionName, $allowedFunctions ) && functi

我试图在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....

    ';
 }
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!";
    }
}
我使用的URL是products.php?func=refreshCurrentProduct&idNum=4

理论上,这应该从包含4的行显示,但是,它只显示第一行的信息。如果我在函数中执行$IDNUM=5,它将显示第5行,因此我传递信息的方式有问题

另外,我如何创建例如$STOCK而不必在$DB_STOCK中有这么多代码?看来一定有更好的办法……

看看

此外,如果我正确阅读了您的代码,您可以在一个查询中获得所有信息:

$query = "SELECT `ID`,`STOCK`,`MYNAME`,`DESCRIPTION`,`PRICE`,`SHIPPING` FROM `PRODUCTS`";
$result = mysql_query($query) or die('Query failed:'.mysql_error());
while ($row = mysql_fetch_assoc($result)) {
    $ID=$row['ID'];
    //etc.
}
看一看

此外,如果我正确阅读了您的代码,您可以在一个查询中获得所有信息:

$query = "SELECT `ID`,`STOCK`,`MYNAME`,`DESCRIPTION`,`PRICE`,`SHIPPING` FROM `PRODUCTS`";
$result = mysql_query($query) or die('Query failed:'.mysql_error());
while ($row = mysql_fetch_assoc($result)) {
    $ID=$row['ID'];
    //etc.
}

为什么不按照其他人已经提到的那样做,$IDNUM不在函数的范围内:

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....

    ';
 }
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 ....
}

为什么不按照其他人已经提到的那样做,$IDNUM不在函数的范围内:

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....

    ';
 }
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 ....
}
$IDNUM变量不在函数的作用域内。您需要将其作为变量传递到函数中,或者您应该能够通过在函数中设置它来在函数中设置它

function refreshCurrentProduct() { 
  $IDNUM = $_GET[ 'idNum' ];
  ...
}
$IDNUM变量不在函数的作用域内。您需要将其作为变量传递到函数中,或者您应该能够通过在函数中设置它来在函数中设置它

function refreshCurrentProduct() { 
  $IDNUM = $_GET[ 'idNum' ];
  ...
}

不完全是这样,OP想要得到某一行,而不是所有的行。顺便说一句$functionName不是OPs的问题。这和预期的一样。不完全一样,OP想要得到某一行,而不是所有的行。顺便说一句$functionName不是OPs的问题。这与预期的一样。mysql\u错误为公共错误消息披露了太多信息。而且,旧的mysql驱动程序已经过时了。查看PDO和prepared statements.mysql_error为公共错误消息披露了太多信息。而且,旧的mysql驱动程序已经过时了。调查PDO和准备好的报表。