Php:变量未传输到foreach中

时间:2015-04-07 08:45:13

标签: php string foreach

这里可能是一个愚蠢的问题,我道歉......

我在foreach中有一个SQL请求,如下所示。 正确定义了“auth”字符串,“echo $ auth”返回我想要的内容。但是sql请求什么都不返回。

// $auth=something;
$val=array(value1,value2,value3);

   foreach ($val as $j)
      {
         $req = mysqli_fetch_array(mysqli_query($link,"select val from user where auth='$auth'"));
         $$j=$req[val];
      }

我的目标是选择$ val数组中包含的sql fied(它完全适用于我项目的其他部分)。提前谢谢。

我也试过这个,仍然没有回复任何东西:

    $val = array('mail','preferences','info','langue'); // This must be an array  
    $fields = explode(",", $val);

   $req = mysqli_fetch_array(mysqli_query($link,"select $fields from user where auth='$auth'"));

   $mail = $req[0]; $preferences = $req[1]; $info = $req[2]; $info = $req[3];

3 个答案:

答案 0 :(得分:2)

  

我的目标是选择$val数组

中包含的sql fied

因此$val包含您要在查询中使用的字段。您可以使用explode()检索没有foreach的所有字段:

$fields = explode(",", $val);

$req = mysqli_fetch_array(mysqli_query($link,"select $fields from user where auth='$auth'"));

你可以获得价值:

$value1 = $req[$val[0]]; // First field

答案 1 :(得分:0)

好的,让我们恢复这一切。所以我们有两种方法。第一:

   $val=array(mail,preferences,info,langue);

   foreach ($val as $j)
      {
         $auth = $_SESSION['auth'];
         echo $auth; //this works
         $req = "select val from user where auth='$auth'";//this works only in phpMyadmin
         $req = mysqli_fetch_array(mysqli_query($link,$req));
         $$j=$req[val];
      }
   echo $mail; //gives nothing of course...

这是第二个:

val = array('mail','preferences','info','langue');
$fields = explode(",", $val);
$req = mysqli_fetch_array(mysqli_query($link,"select $fields from user where auth='$auth'"));
$mail = $req[$val[0]]; $preferences = $req[$val[1]]; $info = $req[$val[2]]; $info = $req[$val[3]];

仍然无效。没有检测到php问题,我的Mysqli实例工作正常...请注意我们处于调试模式,所以我的第一个代码当然没有优化...

答案 2 :(得分:0)

问题是使用explode在分隔符上拆分字符串并创建数组。你已经有了一个数组,但是你想把它变成一个字符串。为此,您可以使用implode

$columns = array("mail", "preferences", "info", "language");
$sql = sprintf("SELECT %s FROM user WHERE auth='%s'", implode(",", $columns), $auth);

$query = mysqli_query($sql); //..fetch possible errors
$row = mysqli_fetch_array($query); //..make sure a row was returned
list($mail, $preferences, $info, $language) = $row;
echo $mail;