要在mysqli_fetch_array
查询中使Array类型保持动态,我想使用变量而不是术语MYSQLI_ASSOC
。当我尝试以下代码时:
$array_type = "MYSQLI_ASSOC";
while($row = mysqli_fetch_array($query,$array_type)){
echo $row["name"];
}
我收到以下错误:
警告:mysqli_fetch_array()期望参数2为整数,在第28行的/var/www/dca/query_results.php中给出的字符串
如果可能的话,我想避免使用if
和else
语句。
答案 0 :(得分:3)
MYSQLI_ASSOC
是数字,而不是字符串。尝试
$array_type = MYSQLI_ASSOC;
答案 1 :(得分:3)
实际上,MYSQLI_ASSOC
是预定义的PHP
constant
(其中包含一个integer
,可以帮助mysqli_result
类了解获取该内容的类型应该使用)。因此,您需要将其值分配给$array_type
变量,而不是将其名称命名为string
:
$array_type = MYSQLI_ASSOC; // no quotes nor apostrophes.
while($row = mysqli_fetch_array($query, $array_type)) {
echo $row["name"];
}
要使事情变得更加动态,您可以创建一个包含不同提取样式的数组,然后调用该数组,并使用适当的索引指示所需的提取样式:
$array_type = [MYSQLI_ASSOC, MYSQLI_NUM, MYSQLI_BOTH]; // array containing the fetching styles.
/**
* $array_type[0] => associative array.
* $array_type[1] => default array(the indexes are numbers).
* $array_type[2] => the both styles are used.
**/
while($row = mysqli_fetch_array($query, $array_type[0])) {
echo $row["name"];
}
希望我进一步推动了你。
答案 2 :(得分:-1)
第二个参数是可选的整数常量,它需要一个整数值而不是字符串see details here
所以您必须使用以下任何一个
$array_type = MYSQLI_ASSOC; // 1
$array_type = MYSQLI_NUM; // 2
$array_type = MYSQLI_BOTH; // 3
或
$array_type = 1; //MYSQLI_ASSOC;
$array_type = 2; //MYSQLI_NUM;
$array_type = 3; //MYSQLI_BOTH;
以上3个常量在MySQLi中定义如下
define ('MYSQLI_ASSOC', 1);
define ('MYSQLI_NUM', 2);
define ('MYSQLI_BOTH', 3);