duandu5846 2014-03-08 10:39
浏览 24

有什么方法可以在PHP中运行MySQL查询并将结果输出到更少空间的数组中?

I'm getting really tired of writing:

$rows = array();
$result = $db->query("SELECT * FROM `table` WHERE `field`='".$information."'");
while($row = $result){
    $rows[] = $row;
}

I tried a function, but it was kinda of messy feeling changing the input to field inputs. I thought maybe this or something similar would help:

$rows = array(); 
while($row = ($db->query("SELECT * FROM `table` WHERE `field`='".$information."'"))->fetch_assoc()){
    $rows[] = $row;
}

but I get unexpected T_OBJECT_OPERATOR. I'm still on the line about using a function. Maybe there's a more efficient way of writing one. This is how I tried writing a function:

$array = SELECT ($db,$toSelect,$table,$where);

It still seems cumbersome, however. I would like something like $array = $db->("MYSQL");

  • 写回答

1条回答 默认 最新

  • duanre4421 2014-03-08 10:54
    关注
    • The simplest solution is to write a function, which expects a database handle and a string query parameter, and returns all the rows.

      $rows = fetch_all($db, "SELECT ...");

    • A bit more advanced is to write your own database class which wraps the database handle and adds such functionality.

      $rows = $mydb->fetch_all("SELECT ...");

    • If you don't want to reinvent the wheel, simply use an existing ORM / PHP database library which does all this (and more) for you.

      $db ->select('*') ->from('table') ->where('field', $information);

    Note: http://www.php.net/manual/en/security.database.sql-injection.php - the third solution automatically solves this problem.

    评论

报告相同问题?