我正在学习PHP
,我非常精通Java
和C
。我接受了一项实践任务来创建一个购物项目。我需要从我的数据库中提取产品。我正在使用产品ID来执行此操作。我想过使用for循环但我不能从数据库中访问prod_id
作为检查的条件!有谁能够帮我?!我已完成所有表格处理,但我需要输出产品。这是我正在使用的for
- 循环。如果我需要添加更多信息,请告诉我。在此先感谢:)
for($i=1; $i + 1 < prod_id; $i++)
{
$query = "SELECT * FROM products where prod_id=$i";
}
答案 0 :(得分:2)
首先,您应该使用database access drivers连接到您的数据库。
您的查询不应传递给周期。当需要这种方法时,情况非常罕见。最好正确使用WHERE
条件句。
要从products
表中获取所有行,您可以省略WHERE
子句。考虑在manual阅读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();
答案 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'];