2013-04-30 141 views
0

我被告知我的腳本容易受到攻擊並將其更改爲PDO。我已經嘗試過了,它正在運行,但在test.php頁面上顯示如此。將PHP腳本轉換爲PDO

Array 
( 
    [name] => matthew 
    [email] => ''@aol.com 
    [order] => shipped 
    [status] => AU1776 
    [attendeesFR] => 1 
) 

我該如何呈現這個數據一個接一個沒有數組和所有的字符?

PDO腳本:

<?php 

    $host=""; // Host name 
     $username=""; // Mysql username 
     $password=""; // Mysql password 
     $db_name=""; // Database name 
     $tbl_name="members"; // Table name 


     $db = new PDO('mysql:host='.$host. 
          ';dbname='.$db_name. 
          ';charset=UTF-8', 
        $username, $password); 
     $stmt = $db->prepare('SELECT * FROM `members` WHERE `username`=:username LIMIT 1'); 
     $result = $st 

     print_r($result); 
    ?> 
+0

猜你不是故意要留下兩個'mysql_'線路中的第二個版本... – 2013-04-30 13:24:49

+0

完全正確對不起 – 2013-04-30 13:25:43

+0

你還有什麼問題? – 2013-04-30 13:26:03

回答

2

PHP的數據對象(PDO)擴展定義爲在PHP訪問數據庫的輕量級的,一致的接口。每個實現PDO接口的數據庫驅動程序都可以將數據庫特定的功能作爲常規擴展功能公開。換句話說,你可以停止使用Mysql函數。相反,您可以使用PDO運行安裝在服務器中的MYSQL驅動程序或任何其他數據庫驅動程序。

你可以找到一些信息:http://www.php.net/manual/en/pdo.construct.php

嘗試了這一點:

<?php 

$host=""; // Host name 
    $username=""; // Mysql username 
    $password=""; // Mysql password 
    $db_name=""; // Database name 
    $tbl_name="members"; // Table name 

    $db = new PDO('mysql:host='.$host. 
         ';dbname='.$db_name. 
         ';charset=UTF-8', 
       $username, $password); 
    $stmt = $db->prepare('SELECT * FROM `members` WHERE `username`=:username LIMIT 1'); 
    $stmt->bindValue(':username', $_POST['textfield'], PDO::PARAM_STR); 
    $stmt->execute(); 
    $result = $stmt->fetch(PDO::FETCH_ASSOC); 

    print_r($result); 
?> 
+0

這確實奏效,但它顯示如下結果: Array([name] => matthew [email] =>''aol.com [order] => shipment [status] => AU1776 [attendeesFR] => 1) 。我如何顯示這一個接一個沒有數組和所有字符? – 2013-04-30 13:40:25

+0

'$ result'是一個正常的關聯數組 - 你可以做任何其他數組。例如,'foreach($ results as $ k => $ v){echo「$ k => $ v \ n」;}'。這不是一個PDO問題。 – 2013-04-30 13:50:47

+0

@FrancisAvila whats k和v – 2013-04-30 13:56:43