Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 返回错误答案的大小_Php_Mysql - Fatal编程技术网

Php 返回错误答案的大小

Php 返回错误答案的大小,php,mysql,Php,Mysql,我正在使用php从mysql表中获取一些数据。该表返回正确的结果。但是,由于该表有许多列,我想我可以为此创建一个for循环,并将我的所有值保存为val1、val2等。我首先使用while循环,因为可以有几行: while($row1 = mysql_fetch_array($sql2)){ for($i = 1; $i < sizeof($row1); $i++) { $val.$i = $row1[$i]; } 然而,由于某些原因,sizeof$row1

我正在使用php从mysql表中获取一些数据。该表返回正确的结果。但是,由于该表有许多列,我想我可以为此创建一个for循环,并将我的所有值保存为val1、val2等。我首先使用while循环,因为可以有几行:

while($row1 = mysql_fetch_array($sql2)){
    for($i = 1; $i < sizeof($row1); $i++) {
        $val.$i = $row1[$i];
    }
然而,由于某些原因,sizeof$row1返回40,而我在该表中只有18列

我认为$val.$I=$row1[$I];声明变量不是正确的方法吗


我知道我会犯一个愚蠢的错误,但我想不出来S

您需要指定结果类型:

mysql_fetch_array($sql2, MYSQL_NUM);
从:

通过使用MYSQL\u-eath-default,您将得到一个同时具有这两个属性的数组 关联索引和数字索引


您需要指定结果类型:

mysql_fetch_array($sql2, MYSQL_NUM);
从:

通过使用MYSQL\u-eath-default,您将得到一个同时具有这两个属性的数组 关联索引和数字索引


$sql2中可能还有一些重复的值,
在Select中使用DISTINCT关键字。

您的$sql2中可能还有一些重复的值,
在您的选择中使用DISTINCT关键字。

在docs sizeof页面上从umopdn[at]msn[dawt]com窃取评论:

始终使用PHP的内部例程来迭代 各种类型…而不是解释代码来循环 他们使用自己的内部程序,速度更快。 这就是为什么foreach比手动交互运行得更快

c我同意皮克塞耶关于sizeof的评论。在PHP中,它只是一个 真实函数计数的别名。它在逻辑上有其他含义 在其他语言中,而不是对象中的元素数。 这应该避免,因为它可能会使开发人员在转换到 PHP来自其他语言


您应该使用count来支持sizeof,但事实上,您可以而且应该使用foreach而不是for。在docs sizeof页面上从umopdn[at]msn[dawt]com窃取评论:

始终使用PHP的内部例程来迭代 各种类型…而不是解释代码来循环 他们使用自己的内部程序,速度更快。 这就是为什么foreach比手动交互运行得更快

c我同意皮克塞耶关于sizeof的评论。在PHP中,它只是一个 真实函数计数的别名。它在逻辑上有其他含义 在其他语言中,而不是对象中的元素数。 这应该避免,因为它可能会使开发人员在转换到 PHP来自其他语言


您应该使用count来支持sizeof,但事实上,您可以而且应该使用foreach而不是for。如果您的数据库中有18个编号的列,您应该检查您的数据库结构。@ChtistopeD:不,我现在只有一个!你认为这是对的:`$val.$i=$row1[$i];如果数据库中有18个带编号的列,则应检查数据库结构。@ChtistopeD:不,我现在只有一个!你认为这是对的:`$val.$i=$row1[$i];这不会影响单行中的结果数。这不会影响单行中的结果数。这对我的有效,但我刚刚意识到我的问题与$val有关。$i=$row1[$i];相反,有什么线索吗?@Namit为什么你的计数从1开始?不应该改为0吗?我想从第二列开始获取数据,因为第一列只是键。您可以执行${val'.$I},这将创建$val1,$val2等,但不建议这样做。最好只做一个数组$val[$i]。这对我的有效,但我刚刚意识到我的问题与$val有关。$i=$row1[$i];相反,有什么线索吗?@Namit为什么你的计数从1开始?不应该改为0吗?我想从第二列开始获取数据,因为第一列只是键。您可以执行${val'.$I},这将创建$val1,$val2等,但不建议这样做。最好只做一个数组$val[$i]。