2012-12-28 39 views
-1

我已经复制并粘贴了所有可能的方法,建议如何为一个用户提取所有行,然后回显到另一个页面,但无法让它回显任何内容。该代码不会给我错误只是空白我include_once PHP页面。从同一用户的数据库中提取所有行

<?php 
$userid = 10; 

/**************************************************************** 
* Open connection to the MySQL database 
****************************************************************/ 

// Create new mysqli object representing a connection to the MySQL data 
$mysqli = new mysqli("localhost", "username", "password", "db"); 

// Test if a connection error occurred 
if ($mysqli->connect_errno !=0) { 
    exit; 
} 

/************************************************************** 
* Run an SQL statement 
**************************************************************/ 

// Create an INSERT query 
$query = "SELECT * FROM table WHERE(userid='".$userid."')"; 
$result = $mysqli->query($query); 
if ($result = $mysqli->query($query)) { 
    while ($rows = $result->fetch_assoc()) { 
     $rows[] = $row; 
    } 
    foreach($rows as $row) { 
     $category = $row['category']; 
     $amount = $row['amount']; 
     echo $category; 
    } 
    $result->close(); 
} 
// Attempt to close connection 
$closed = $mysqli->close(); 
?> 

此用户有10行内容,我想全力以赴,请协助!

+0

你为什么要运行查询的两倍,并运行两个独立的循环?你可以结合while + foreach循环,并简单地使用echo $ rows ['category']'。 –

回答

0
$query = "SELECT * FROM table WHERE(userid='".$userid."')"; 

应该

$query = "SELECT * FROM table WHERE userid='".$userid."'"; 

而且这里有个错误

while ($rows = $result->fetch_assoc()) { 

    $rows[] = $row; 
    } 

$行没有定义,所以你应该分配$行到阵列上左。将左边的数组命名为

if ($result = $mysqli->query($query)) { 
    while ($rows = $result->fetch_assoc()) { 
     $values[] = $rows; 
    } 
    foreach($values as $row) { 
     $category = $row['category']; 
     $amount = $row['amount']; 
     echo $category; 
    } 
    $result->close(); 
} 
+0

nope。根本不重要! –

+0

@jw .:是的,[确实很重要](http://sqlfiddle.com/#!2/1f75a/2) –

+0

@juergend看到这个http://sqlfiddle.com/#!2/879e0/12 –

0

请查看您的代码以了解可能的点故障,以下是一些注释。 如果你了解为什么不看看PHP PDO类,那将是一个很好的替代几个数据库驱动程序。

<?php 

    $userid = 10; 


    /**************************************************************** 
    * Open connection to the MySQL database 
    ****************************************************************/ 

    // Create new mysqli object representing a connection to the MySQL data 
    $mysqli = new mysqli("localhost", "username", "password", "db"); 


    // Test if a connection error occurred 
    if ($mysqli->connect_errno != 0) 
    exit('error on connect'); 

    /************************************************************** 
    * Run an SQL statement 
    **************************************************************/ 

    // Create an INSERT query 

    // avoid temporary variables 
    //$query = "SELECT * FROM table WHERE(userid='".$userid."')"; 
    // reader will know taht is a query by function name 
    //WARNING you should scape data coming from form 
    //expecting numeric data, so convert it 
    $result = $mysqli->query("SELECT * FROM table WHERE(userid='".intval($userid)."')"); 

    // error here 
    //if ($result = $mysqli->query($query)) { 
    // 
    if (!($result = $mysqli->query($result))) 
     exit('query error'); 
    // error here also changed variable name 
    //while ($rows = $result->fetch_assoc()) 
    // $rows[] = $row; 
    $rows = array(); 
    while ($tmp = $result->fetch_assoc()) 
    $rows[] = $tmp; 

    foreach($rows as $row) 
    { 
    // unnecessary code also, duplicating variable 
    //$category = $row['category']; 
    //$amount = $row['amount']; 
    //echo $category; 
     echo $row['category']; 
    } 

    $result->close(); 
    } 


// Attempt to close connection 
$closed = $mysqli->close(); 
?> 
相关问题