如何从MySQL数据库中获取数据并将其插入到文本中

时间:2016-07-21 21:57:42

标签: php mysql

我一直在我的网站上工作 - 它是一个不同商品的商店(它也是我的第一个网站)。我刚刚完成了网站的HTML / CSS部分,但我想让它更动态,更容易编辑,而无需一次更改多个页面。我认为我可以做到这一点并且更容易实现网站搜索的一种方法是通过在数据库中获取项目的名称和价格并使用PHP代码检索名称和价格并将其插入项目图像下方。不幸的是,我完全不知道如何解决这个问题。我已经尝试过寻找有类似问题的其他人,但他们似乎都不是我特别想要的。我将我的PHP代码放在下面,然后我会放一些HTML代码来显示我想要放置信息的位置。

<?php
$servername = "localhost";
$username = "root";
$password = "testpw";
$dbname = "testdb";

$conn = new mysqli($servername, $username, $password, $dbname);
if($conn->connect_error) {
}
$sql = "SELECT id, name, price FROM items";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo " " .$row["id"]. " " .$row["name"]. " " .$row["price"]. "<br>";
}
} else {
echo "0 results";
}
$conn->close();

?>

这就是我用来获取每个项目信息的PHP代码。但问题是,它获取每个项目的信息并立即显示。我希望代码检查项目的ID,然后检索有关它的统计信息并显示它们。这意味着如果我想重新安排商店里的物品,我只需要更改ID-这使我更容易操纵商店及其中的物品。以下是项目的HTML代码。

<div id="images">
<figure>
    <img class="gunimage" id="(THIS IS THE ID USED TO GET THE INFO)" src="idk.png" width="225" height="190" alt="">
    <figcaption><h3>Name: (INSERT NAME HERE USING PHP) </h3></figcaption>
    <figcaption><h5>Price: (INSERT OTHER PRICE HERE)/month</h5></figcaption>
    <figcaption><div id="tfbutton5"><form action="buy.html"><input   type="submit" value="Rent" class="tfbutton5"></form></figcaption>
</div>
</figure>
</div>

我标记了我想要信息的位置,并且我希望拥有ID,因此PHP代码知道它是什么项目。我知道这两个代码分开工作,因为我已经多次测试过它们。对不起,如果我的问题很长,我想尽可能具体,以便清楚我的问题是什么。请原谅我的代码是否需要进行大量更改才能适用于我所描述的情况,因为我只能弄清楚如何制作能够列出每个项目信息的内容。任何帮助,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

如果你想做更多的事情,你可以放入一个名为
的文件 &#39; connection.php&#39;或更具描述性的东西

  try { 
  $servername = 'localhost';
 $username = 'root';
 $password = 'testpw';
 $dbname = 'testdb';
 $db = new mysqli($servername, $username, $password, $dbname);
 } catch(Exception $e) {
   echo $e->error_list;
   exit;
 }
function execute_query($con, $query, $variables) {
$stmt = $con->prepare($query);
$stmt->execute($variables);
return $stmt;
} 

如果你有多个函数,可以在function.php文件中将函数拆分为connection.php中的顶部。

include ('connection.php');
$id_number = $_GET['id'];
# !! NOTICE if grabbing | my understanding another page | 
// filter if grabbing from GLOBAL Variable $_GET 
$id = filter_var($id_number, FILTER_SANITIZE_NUMBER_INT); //take out 
if not grabbing from outside source.
$con = $db;
try {
   $query = 'SELECT t.id as id , t.name as name, t.price as price
   FROM items as t
   WHERE t.id = :id';
$variables[':id'] = $id;
  $items = execute_query($con, $query, $variables);
}catch(mysqli_error_list $e) {
  echo $e->getMessage();
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
 </head>
<body>
<div id="images"><!-- i am guessing you want it within this div-->
<?php if(isset($item)) { ?>
 <?php foreach ( $items as $item) { ?> 
 <figure>
      <img class="gunimage" id="<?php echo $item['id']; ?>"
 src="idk.png" width="225" height="190" alt="<?php echo $item['name']; 
?>">
  <figcaption><h3>Name: <?php echo $item['name']; ?> </h3>
 </figcaption>
  <figcaption><h5>Price: <?php echo $item['price']; ?> </h5>
 </figcaption>
  <figcaption>
  <!-- instead of a id tfbutton5 needs to be a class otherwise your
  going to have an issue here when it loops, you will have an error-->
  <div class="tfbutton5"><form action="buy.html"><input
    type="submit" value="Rent" class="tfbutton5"></form>
  <!--also, not sure why you have an Id and a class  named exactly 
 identical but it is bad practice. sorry do not do it. -->
   </figcaption>
     </div>
     </figure>
  <?php } ?>
 <?php } ?>
 </div>
</body>
</html> 

如果你想要一个图像源,你需要将它输入数据库并将你的Items表连接到一个Image表,该表具有say..rows id,image和item-id。然后使用item-id作为项目和图像之间的点