0

我正在做一个允许我创建客户数据库的项目。我已经创建了一个 Create.php 和 Delete.php,但是在编辑页面的基本结构方面遇到了问题。

我最初的想法是创建一个填充的下拉框(我可以这样做),点击它会将用户带到 domain.com/Customer.php?Customer_name="JohnD"

我对此有一些问题,因为它正在做两件事。

  1. 它正在将我表中的所有数据打印到回声中。
  2. 它没有从 URL 中获取值,但是我知道我错过了一些东西,但不确定我需要搜索什么。

到目前为止,这是我的片段:

               <h2>
                <?Php
                $sql="SELECT id,customer_name FROM Customers";
                $result =mysql_query($sql);
                while ($data=mysql_fetch_assoc($result)){
                ?>
                <?Php echo $data['customer_name']; } ?>
                </h2>

到目前为止,我在标题中得到了这个:

John Doe Jimmy Timmy 测试

这些是我的表客户行中的所有值。

抱歉,如果问题似乎无处不在。如果不容易理解,我会纠正。

提前致谢

4

3 回答 3

1

您需要使用$_GET从 URL 中获取参数。

<?php

  //customer.php?Customer_name=JohnD (no quotes)

  echo $_GET[Customer_name];

?>

然后,您将使用mysqli_orPDO来绑定$_GET[Customer_name]和执行查询。如果您在 SQL 查询中不绑定参数,您将容易受到 SQL 注入的攻击。

于 2013-01-19T18:36:41.737 回答
1

您需要使用 where 子句将 SQL 选择限制为特定客户。您可能会从请求中获取该客户 ID。我建议您在下拉框中使用客户 ID 而不是名称。这样 URL 将是:

  domain.com/Customer.php?id=1

在 Customer.php 页面上,您可以使用$id = $_GET['id'];

现在对于您的 SQL,您应该使用一些更安全的方法来查询数据库说:

   $dsn = 'mysql:host=localhost;dbname=mydb';
   $username = 'myun';
   $password = 'mypw';
   $options = array(
       PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
   ); 
   $dbh = new PDO($dsn, $username, $password, $options);
   $stmt = $dbh->prepare("select id, Customer_name from customers where id = :id");
   $stmt->bindParam(':id', $id);
   $stmt->execute();

   while($c = $stmt->fetch()){
          echo $c['customer_name'];
   }

这样只会显示所选客户的数据。

于 2013-01-19T18:41:40.940 回答
1

使用这个网址

domain.com/Customer.php?CID=1

并且代码应该看起来像

<?php

            $customer_id = (int) $_GET['CID'];

            $query = "SELECT id, customer_name FROM Customers 
                           WHERE id = {$customer_id}";

            $result = mysql_query($query) or die('<p>' . $query . '</p><div>' . 
                                   mysql_error() . '</div>');

            $customer = mysql_fetch_assoc($result);  

?>
 <h2><?php echo $customer['customer_name'] ?></h2>
于 2013-01-19T18:46:04.310 回答