MySQL列值为数组。结果错误的值

时间:2014-01-02 17:57:05

标签: php mysql arrays

尝试从单个列获取所有值。 毕竟只是尝试打印所有值来检查一切是否正常。不幸的是,我打印的所有值都是相同的 - “数组”(没有引号)。

我是MySQL的新手。这是我的代码:

$sql_connect = mysql_connect("localhost","db_user_name","db_password") ;
if (!$sql_connect) {
    die("Database connection failed: " . mysql_error());
}
mysql_select_db("db_name") or die ("no database");

$result = mysql_query("SELECT column_name FROM table_name");
$video_IDs = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $video_IDs[] =  $row[$key];  
}

然后,我打印$video_IDs数组

$test = 1 ;
while (each($video_IDs)) {
    echo "{$test} - {$video_IDs}<br />" ;
    $test++ ;
}

mysql_close($sql_connect);

结果我打印了所有10个值,因为10行在我的表中。但所有值都是“数组”(没有引号)。

我的结果:

1 - Array
2 - Array
3 - Array
4 - Array
5 - Array
6 - Array
7 - Array
8 - Array
9 - Array
10 - Array

期待得到任何建议。

4 个答案:

答案 0 :(得分:0)

没有使用循环或递归或访问所述数组的特定元素,没有本地方法echo数组。你也不正确地使用each函数,因为它返回一个键/值对(并且你没有捕获循环的结果。)你应该做这样的事情:

$test = 1 ;
foreach ($video_IDs as $v) {
    echo "{$test} - {$v}<br />";
    $test++;
}

如果您必须使用each,则此处对原始代码稍作更改,以便在每次迭代时将键/值对存储在$v

$test = 1 ;
while ($v = each($video_IDs)) {
    echo "{$test} - {".$v['value']."}<br />" ;
    $test++ ;
}

如果您只是尝试在没有任何特定格式的情况下显示数组,请使用var_dumpprint_r

还需要注意您使用的是折旧函数(mysql_*),并且应该使用MySQLi或PDO进行SQL查询。

答案 1 :(得分:0)

如果$video_IDs是一个数组,则需要使用print_r或循环遍历每个元素。下面的代码将输出您的数据

$test = 1 ;
foreach( $video_IDs as $key => $value) {
  if( is_array($value) ){
    echo "$test $key =>";
    print_r($value);
    echo "<br/>";
  }else{
     echo "$test $key => $value <br/>";
  }
   $test++ ;
}

答案 2 :(得分:0)

如果要打印数组内容,请使用print_r(array_name) 查看内容的最佳方式是

echo "<pre>";
print_r(array_name);
echo "</pre>";

答案 3 :(得分:0)

找到解决方案

感谢您提出建议并指出折旧函数(mysql_ *)。我已经改变了与MySQL DB功能和其他所有内容的连接,现在我有了正确的结果。

$link = mysqli_connect('localhost', 'username', 'password', 'db_name'); 

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT column_name FROM table_name";
$result = mysqli_query($link,$query);

while ($video_IDs = mysqli_fetch_array($result, MYSQLI_ASSOC))
{
 $rows[] = $video_IDs ;
}

foreach($rows as $video_IDs)
{
 echo $video_IDs['column_name']."<br />";
}

感谢大家的评论!