PHP / MySQL:使用MySQL查询中的数组元素声明变量

杰夫·P。

我试图从数据库中检索数据,并将数组元素分配给希望在整个程序中使用的PHP变量,这样我就不必担心以后再发布单独的表单数据。

我知道我当前设置的查询正在使用先前的测试,但是当我尝试使用FOR循环输出从MySQL查询结果分配的变量时,仅显示数据库中的第一个元素。

PHP / MySQL代码:

// Retrieve tasks from the tasks table 
$tasks_sql = "SELECT DISTINCT taskname FROM tasks";
$tasks_result = mysqli_query($usermysqli, $tasks_sql);
if (! $tasks_result){
      die('Could not retrieve data: ' . mysql.error());
    }

// Array for assigning tasknames to global variables

while($tasks_displayed = $tasks_result->fetch_array()) {

for ($i=0, $inputlen = count($tasks_displayed); $i < $inputlen; $i++) {
${'line'.($i+1)} = $tasks_displayed[$i];
}

}   

// Test to see if the array above actually worked.
echo "Task 1 from array: " . $line1 . "<br>";
echo "Task 2 from array: " . $line2 . "<br>";
echo "Task 3 from array: " . $line3 . "<br>";
echo "Task 4 from array: " . $line4 . "<br>";
echo "Task 5 from array: " . $line5 . "<br>";
echo "Task 6 from array: " . $line6 . "<br>";

只有第一个元素可以正确显示,变量$ line2-$ line6当前为空。这是一个简单的编码错误吗?

迈克尔·伯科夫斯基

由于for循环嵌套在while访存循环中,并且您正在使用for循环填充各个变量,因此在每次循环迭代中,您都将覆盖相同的变量。换句话说,在每次读取时,您都将获得包含1个元素的1行数组。然后,for循环遍历该单行,一次又一次地填充第一个变量。

for循环需要发生while循环,一旦所有行已提取到一个数组。

// Fetch an associative array
// array to hold all tasks
$tasks = array();
// Also, consider sticking with the procedural method since that's what you use elsewhere
while ($tasks_displayed = $tasks_result->fetch_assoc()) {
// procedural alternate:
// while ($tasks_displayed = mysqli_fetch_assoc($tasks_result)) {
  // Append the task onto your array
  $tasks[] = $tasks_displayed['taskname'];
}
// Following the loop you now have an array of tasks.
// you can use a for loop to display them:
$tasklength = count($tasks);
for ($i = 0; $i < $tasks; $i++) {
  // Populate your variables...
  ${'line'.($i+1)} = $tasks[$i];
}

但...

就是说,递增for循环确实很少在PHP中使用。foreach几乎总是p首选。如果您确实必须填充这些局部变量,而不是直接从$tasks我们先前填充数组中直接使用它们,请使用foreach

foreach ($tasks as $key => $task) {
    ${'line'.($key + 1)} = $tasks[$key];
}

实际上,最常规的做法是将任务保留在循环$tasks内部创建数组中,while而不是填充可能未知的变量数量,而不必将它们添加到局部或全局符号表中。如果任务是相关的(可以说是简单的,因为它们都是任务),那么将它们绑定在一个数组中是明智的。

// Use $tasks as an array, don't populate variables:
foreach ($tasks as $key => $task) {
  echo "Task $key from array: $task<br/>\n"; 
}

如评论中所述,请注意不要mysql_*()mysqli_*()API混淆您的呼叫mysql_error()应该改为的呼叫mysqli_error($usermysqli)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在php / mysql中的mysql查询中使用数组变量

来自分类Dev

MySQL查询未插入PHP中添加的数组元素

来自分类Dev

PHP MYSQL查询未将数组传递到我的变量中

来自分类Dev

获取数组元素并在php中的mysql查询中使用它

来自分类Dev

PHP MySQL查询变量

来自分类Dev

PHP MySQL查询变量

来自分类Dev

PHP变量声明错误-MySQL

来自分类Dev

mysql查询中的PHP变量名称

来自分类Dev

MySQL查询中的PHP整数变量

来自分类Dev

在php变量中输出mysql查询结果

来自分类Dev

PHP - mySQL 查询中的几个变量

来自分类Dev

使用PHP和MySQL查询的数组维度

来自分类Dev

从MySQL数组中的PHP函数返回变量

来自分类Dev

从数组和变量中过滤时的 PHP mysql 查询问题

来自分类Dev

PHP MYSQL查询未将数组传递给我的变量

来自分类Dev

PHP变量和MySQL查询

来自分类Dev

mysql查询中的php

来自分类Dev

PHP/MySQL 查询使用 AND

来自分类Dev

PHP中的MYSQL变量

来自分类Dev

PHP数组到mysql查询

来自分类Dev

使用php在mysql中插入查询错误

来自分类Dev

使用PHP中的变量进行MySQL更新

来自分类Dev

PHP数组与[]在方法和变量声明中

来自分类Dev

使用 PHP 将 MYSQL 查询中的元素添加到 HTML 表

来自分类Dev

使用mysql动态填充php中的数组

来自分类Dev

php-mysql查询中变量周围的单引号

来自分类Dev

无法在MYSQL查询中获取PHP变量才能正常工作

来自分类Dev

MySQL查询中的PHP变量WHILE字符串中断

来自分类Dev

使用变量选项构造PHP / MySQL搜索查询