2013-01-19 61 views
0

我正在開發一個項目,該項目允許我創建客戶數據庫。我創建了一個Create.php和Delete.php,但是在編輯頁面的基本結構方面存在問題。使用PHP聲明頁面url

我最初的想法是創建一個人口下拉框(這點我能做到),它的點擊將用戶帶到domain.com/Customer.php?Customer_name="JohnD」

我有一個關於這方面的問題很少,因爲它正在做2件事。

  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> 

作爲然而,我在頭得到這個:

李四吉米·鄧肯測試

這些都是裏面的所有值我的表爲客戶的行。

對不起,如果問題似乎遍佈各地。如果不容易理解,我會糾正。

在此先感謝

+1

(HTTP [**請不要在新代碼**使用'mysql_ *'功能]:/ /bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。 – Kermit

+0

閱讀所有帖子後,我意識到我做錯了什麼。部分原因是我的ID在數據庫中是一個奇怪的數字。 –

回答

1

使用此URL

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> 
+0

我假設WHERE ID = {} CUSTOMER_ID「會是什麼我有ID爲客戶在我的MySQL是 所以 ID CUSTOMER_NAME地址 等 –

+0

-1使用'mysql_'功能 – Kermit

+0

是的,。?。您可以使用姓名,地址或任何其他信息來搜索記錄,使用id意味着您正在搜索指定的記錄,並且不想要任何其他記錄。如果你在上一頁列出記錄並鏈接頁面以顯示指定的記錄細節,請始終使用id。我使用了mysql函數,因爲這個人對我來說看起來很陌生,並且可能不知道PDO,所以我在他可能熟悉的代碼中解決了他的問題。這是否合理? – fkabeer

1

您需要使用$_GET來從URL中的參數。

<?php 

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

    echo $_GET[Customer_name]; 

?> 

你會再使用mysqli_PDO結合$_GET[Customer_name]和執行查詢。如果您不在SQL查詢中綁定參數,那麼您將很容易受到SQL注入的影響。

+0

你好,我不知道PHP已經擺脫了這一點。謝謝。 對不起,如果這聽起來令人困惑,但我仍然試圖瞭解這背後的方法。 在我填充的下拉頁面(Customerselect.php)我會鏈接到「Customer.php?Customer_Name =」。 $ _GET [CUSTOMER_NAME]; 這是正確的嗎? 我現在正在閱讀mysqli進行更改。 –

+0

你應該使用一個ID。如果您使用的是下拉菜單,則可以選擇客戶ID。 – Kermit

1

您需要使用where子句將SQL select限制到特定的客戶。您可能會從請求中獲取該客戶ID。我建議你在下拉框中使用客戶ID而不是姓名。這樣的網址爲:

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']; 
    } 

這種方式只顯示選定客戶的數據。