我有一个包含6列的表
排序如下:
数据库 - >孩子
|CANDY | COLOR | DRINK | PET | SONG | TOY |
---------------------------------------------------
|cookie | blue | juice | dog | if | ball |
|cake | red | coke | cat | ask | doll |
我想存储
Array
Candy[];
中的所有糖果
color[];
drink[];
等所有饮料...... 我设法使用带有这些行的FORLOOP
的列名创建数组,这样可以正常工作:
$ fieldName = mysqli_fetch_field_direct($ result,$ i) - > name; $ {$ fieldName} = array();
但是当代码到达WHILE部分时,也就是在循环内部,要在arrays []中添加列项,它只添加第一个元素并返回到FORLOOP,并将一个元素添加到next array []并跳转到下一个数组[] ....
while($row = mysqli_fetch_array($result)){
//inserts itens in the "$array" with columns name
${$fieldName}[] = $row[$i];
}
如果我尝试"echo"
arrays[]
并且未在"BREAK"
的末尾添加WHILE
,则会返回错误
“Undefined offset:0 in line ...”
当我输入“BREAK
”时,它适用于:
echo candy[0]; = cookie
但不适用于:
echo candy[1]; = Undefined offset: 1 in line...
以下是整个代码:
$sql="SELECT candy, color, drink, pet, song, toy FROM kids";
$result = mysqli_query($con,$sql);
$colNumber = mysqli_num_fields($result);
for($i=0;$i<=$colNumber -1;$i++){
$fieldName = mysqli_fetch_field_direct($result, $i)->name;
echo . $fieldName . "<br /><br />";
//Creates an Array with Coll Name from DB
//with dynamic-variable ${$fieldname}
${$fieldName} = array();
while($row = mysqli_fetch_array($result, MYSQLI_NUM)){
//inserts the received itens into the array ${$fieldName}
${$fieldName}[] = $row[$i];
printf ("%s (%s)\n", $row[$i], $row[1]);
}
echo ${$fieldName}[0];
echo candy[0];
echo ${$fieldName}[1];
echo candy[1];
echo "<hr />";
}
当WHILE代码不在FORLOOP
内并且如果我像query()
那样生成时,WHILE代码可以正常工作:
SELECT candy FROM kids.
然而,就像那样,我需要600行重复代码才能得到我想要的东西,并为DB表上的每个新coll重复/粘贴。
有什么想法吗?
我需要它将数组放在HTML中
<SELECT><OPTION></SELECT>
,然后使用mt_rand()
进行随机播放并获得不同的“profiles
”。这不会用于孩子的东西,这只是一个例子。
它将是一个虚拟的犯罪创造者,它将改变变量,为法学院学生的工作创造不同的犯罪假设。
我已经花了3天时间阅读http://php.net/manual/pt_BR/mysqli-result.fetch-array.php
上的文档和“谷歌搜索”它但找不到任何答案。
答案 0 :(得分:2)
找到了一种方法。我将代码翻译成英文,以便其他人可以拥有它。如果有任何变量名称错误,请使用评论进行修复并享受!
$sql = "SELECT parquet, defendant, action, modusOperandi, victim, crime FROM crime_elements";
//runs '$sql' query to get database data
$result = mysqli_query($con,$sql);
$collNumber = mysqli_num_fields($result);
echo "ColL Number :" . $collNumber;
// Creates $data Array[]
$data = array();
while($row = mysqli_fetch_array($result)){
//inserts received data into "$data" and makes available by array[]index
$data[] = $row;
}
for($i=0;$i<=$collNumber -1;$i++){
// Gets the column name from the query()
$fieldName = mysqli_fetch_field_direct($result, $i)->name;
echo "</br><b>Coll Name:</b> " . $fieldName . "<br /><br />";
${$fieldName} = array_column($data, $i);
print_r(${$fieldName});
echo "<br /><b>Specified item choice[]:</b> ". ${$fieldName}[2];
echo "<hr />";
}