在表列外创建PHP数组

在表列外创建PHP数组,php,sql,Php,Sql,我试图创建一个循环,显示表中的每一行。我想我需要用PK做一个数组,但我不知道怎么做。以下是我目前的代码: $conn = dbConnect('read'); $getData = 'SELECT * FROM table'; $allData = $conn->query($getdata); if (!$allData) { $error = $conn->error; } else { $data = $allData->fetch_assoc();

我试图创建一个循环,显示表中的每一行。我想我需要用PK做一个数组,但我不知道怎么做。以下是我目前的代码:

$conn = dbConnect('read');
$getData = 'SELECT * FROM table';
$allData = $conn->query($getdata);
if (!$allData) {
    $error = $conn->error;
} else {
    $data = $allData->fetch_assoc();
    $rowId = array($data['PK']);
} while ($rowId <= count($rowId)) {
    // code to be run for each row
    $rowId++;
}

编辑:对不起,我的问题让人困惑,我是PHP新手。

你的问题有点让人困惑,但我认为这就是你想要做的:

$sql = 'SELECT * FROM table';
$query = $conn->query($sql);
while ($row = $query->fetch_assoc()) {
    $data[$row['PK']] = $row;
}

这将遍历每一行,创建一个数组,并使用列PK的行值作为关联数组键

你的问题有点让人困惑,但我认为这就是你想要做的:

$sql = 'SELECT * FROM table';
$query = $conn->query($sql);
while ($row = $query->fetch_assoc()) {
    $data[$row['PK']] = $row;
}
这将遍历每一行,创建一个数组,并使用列PK的行值作为关联数组键

fetch\u assoc我假设mysqli现在不会从结果中获取所有数据,而是一行接一行。因此,您不需要创建$row['PK']数组,而是需要循环结果

$conn = dbConnect('read');
$getData = 'SELECT * FROM `table`'; // you would need backticks here, if the table really is called "table" (what you shouldn't do...)
$result = $conn->query($getData); // it's not 'allData', it is a result_set. And be carefull about Case! $getData!=$getdata
if (!$result) {
    $error = $conn->error;
} else {
    $cnt=0;
    while($row = $result->fetch_assoc()) {
        // code to be run for each row
        // you can display $row['PK'] now:
        echo $row['PK'];
        // or add that value to something else, whatever you need
        $cnt = $cnt+$row['PK'];
        // or to have a new array with the values of one table-column:
        $columnRows[] = $row['PK'];
    }
    // now you can use the created array
    foreach($columnRows as $PK) {
        echo $PK;
    }
}
fetch_assoc我假设mysqli现在不会从一个结果中获取所有数据,而是一行接一行。因此,您不需要创建$row['PK']数组,而是需要循环结果

$conn = dbConnect('read');
$getData = 'SELECT * FROM `table`'; // you would need backticks here, if the table really is called "table" (what you shouldn't do...)
$result = $conn->query($getData); // it's not 'allData', it is a result_set. And be carefull about Case! $getData!=$getdata
if (!$result) {
    $error = $conn->error;
} else {
    $cnt=0;
    while($row = $result->fetch_assoc()) {
        // code to be run for each row
        // you can display $row['PK'] now:
        echo $row['PK'];
        // or add that value to something else, whatever you need
        $cnt = $cnt+$row['PK'];
        // or to have a new array with the values of one table-column:
        $columnRows[] = $row['PK'];
    }
    // now you can use the created array
    foreach($columnRows as $PK) {
        echo $PK;
    }
}

你知道fetch_assoc只在一行之后取一行吗?朱利奥:它不是PK,而是一个自动递增的整数。杰夫:我不知道。您的建议是什么呢?您的while中没有包含$row,您正在使用fetch assoc和then数组调用和数组2次。看看我的答案。为什么只想捕获生成的代理密钥?听起来你在试图解决另一个问题,但你没有告诉我们你试图以错误的方式解决的问题。旁注:table不是它的实际名称,是吗?你知道fetch_assoc只在一行之后取一行吗?Julio:它不是PK,而是一个自动递增整数。杰夫:我不知道。您的建议是什么呢?您的while中没有包含$row,您正在使用fetch assoc和then数组调用和数组2次。看看我的答案。为什么只想捕获生成的代理密钥?听起来您正在尝试解决另一个问题,但您没有告诉我们您试图以错误的方式修复的问题。旁注:table不是它的实际名称,是吗?请看下面两行:$getData='SELECT*FROM table'$结果=$conn->query$getdata$获取数据!=$获取数据,谢谢。从操作系统复制并粘贴。。。我没看到,你本可以改编的。这里不是征服!我们只需要确保我们的答案是正确的。是的,但如果没有codeigniter,我会在他的答案中做与@billynoah相同的事情,我们可以重复一个答案。看看这两行:$getData='SELECT*FROM table'$结果=$conn->query$getdata$获取数据!=$获取数据,谢谢。从操作系统复制并粘贴。。。我没看到,你本可以改编的。这里不是征服!我们只需要确保我们的答案是正确的。是的,但是如果没有codeigniter,我会在他的答案中和@billynoah做同样的事情,我们可以重复一个答案lol