如何使用for循环访问我的数据库元素?

时间:2013-06-12 05:20:39

标签: php loops for-loop

我正在学习PHP,我非常精通JavaC。我接受了一项实践任务来创建一个购物项目。我需要从我的数据库中提取产品。我正在使用产品ID来执行此操作。我想过使用for循环但我不能从数据库中访问prod_id作为检查的条件!有谁能够帮我?!我已完成所有表格处理,但我需要输出产品。这是我正在使用的for - 循环。如果我需要添加更多信息,请告诉我。在此先感谢:)

for($i=1; $i + 1 < prod_id; $i++)
{
   $query = "SELECT * FROM products where prod_id=$i";
}

5 个答案:

答案 0 :(得分:2)

  1. 首先,您应该使用database access drivers连接到您的数据库。

  2. 您的查询不应传递给周期。当需要这种方法时,情况非常罕见。最好正确使用WHERE条件句。

  3. 要从products表中获取所有行,您可以省略WHERE子句。考虑在manual阅读http://dev.mysql.com/doc

  4.   

    如果没有WHERE子句,语句将选择所有行。

    以下示例适用于MySQLi驱动程序。

    // connection to MySQL:
    // replace host, login, password, database with real values.
    $dbms = mysqli_connect('host', 'login', 'password', 'database');
    
    // if not connected then exit:
    if($dbms->connect_errno)exit($dbms->connect_error);
    
    $sql = "SELECT * FROM products";
    
    // executing query:
    $result = $dbms->query($sql);
    
    // if query failed then exit:
    if($dbms->errno)exit($dbms->error);
    
    // for each result row as $product:
    while($product = $row->fetch_assoc()){
        // output:
        var_dump($product); // replace it with requied template
    }
    
    // free result memory:
    $result->free();
    
    // close dbms connection:
    $dbms->close();
    

答案 1 :(得分:2)

我建议您使用PDO。此方法将保护您的所有SQL并保持所有连接的关闭和完整。

这是一个例子

示例 这是你的dbc类(dbc.php)

<?php

class dbc {

    public $dbserver = 'server';
    public $dbusername = 'user';
    public $dbpassword = 'pass';
    public $dbname = 'db';

    function openDb() {    
        try {
            $db = new PDO('mysql:host=' . $this->dbserver . ';dbname=' . $this->dbname . ';charset=utf8', '' . $this->dbusername . '', '' . $this->dbpassword . '');
        } catch (PDOException $e) {
            die("error, please try again");
        }        
        return $db;
    }

    function getproduct($id) {
        //prepared query to prevent SQL injections
        $query = "SELECT * FROM products where prod_id=?";
        $stmt = $this->openDb()->prepare($query);
        $stmt->bindValue(1, $id, PDO::PARAM_INT);
        $stmt->execute();
        $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
        return $rows;
    }    
?>

你的PHP页面:

<?php 
require "dbc.php";
for($i=1; $i+1<prod_id; $i++) 
{

$getList = $db->getproduct($i);
//for each loop will be useful Only if there are more than one records (FYI)
foreach ($getList as $key=> $row) {
         echo $row['columnName'] .' key: '. $key;
    }
}

答案 2 :(得分:0)

for($i=1;$i+1<prod_id;$i++) {
    $query = "SELECT * FROM products where prod_id=$i";
    $result = mysqli_query($query, $con);

$ con是数据库连接详细信息 你可以使用while循环来遍历每一行

    while ($row = mysqli_fetch_array($result))
    {
        ......
    }
}

答案 3 :(得分:0)

希望这可能会根据您的需要发挥作用..

for($i=1; $i+1<prod_id; $i++) {
   $query  = "SELECT * FROM products where prod_id = $i";
   $result = mysql_query($query);

   while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
         print_r($row);  
   }
}

答案 4 :(得分:0)

我想你想要你桌子上的所有记录,如果这是你可以轻松做到的要求

$query = mysql_query("SELECT * FROM products"); // where condition is optional   

while($row=mysql_fetch_array($query)){
   print_r($row);
   echo '<br>';
}

这将为每一行打印一个关联数组,您可以访问每个字段,如

echo $row['prod_id'];