0

私は学んPHPでいて、 と に精通しJavaていCます。ショッピング プロジェクトを作成するための練習課題が与えられました。データベースから製品を引き出す必要があります。これを行うために製品IDを使用しています。forループを使おうと思ったのですがprod_id、確認の条件としてデータベースからアクセスできません!誰か助けてくれませんか?! フォームの処理はすべて完了しましたが、製品を出力する必要があります。これはfor私が使用しているループです。さらに情報を追加する必要がある場合はお知らせください。前もって感謝します :)

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

5 に答える 5

2
  1. まず、データベース アクセス ドライバーを使用してデータベースに接続する必要があります。

  2. クエリをサイクルに渡すべきではありません。このようなアプローチが必要になるのは非常にまれな状況です。WHERE条件句を適切に使用することをお勧めします。

  3. productsテーブルからすべての行を取得するには、WHERE句を省略できます。http://dev.mysql.com/docでマニュアルを読むことを検討してください。

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();
于 2013-06-12T05:28:19.040 に答える
2

I would suggest that you use PDO. This method will secure all your SQLand will keep all your connections closed and intact.

Here is an example

EXAMPLE. This is your dbc class (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;
    }    
?>

your PHP page:

<?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;
    }
}
于 2013-06-12T05:39:24.327 に答える
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);  
   }
}
于 2013-06-12T05:31:49.883 に答える
0
for($i=1;$i+1<prod_id;$i++) {
    $query = "SELECT * FROM products where prod_id=$i";
    $result = mysqli_query($query, $con);

$con はデータベース接続の詳細で、ワイルループを使用して各行をループできます

    while ($row = mysqli_fetch_array($result))
    {
        ......
    }
}
于 2013-06-12T05:27:14.477 に答える
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'];
于 2013-06-12T05:33:21.813 に答える