这里可能是一个愚蠢的问题,我道歉......
我在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];
答案 0 :(得分:2)
我的目标是选择
中包含的sql fied$val
数组
因此$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;