2012-11-23 82 views
1

我爲我的查詢使用PDO,並嘗試轉義一些'&',因爲它們使請求無效。我已經嘗試過使用mysql_real_escape_string和pdo引用......兩者都沒有逃脫'&'。我的價值是例如「傑克&傑克」。PDO轉義&查詢

由於連接器:

$this->connect = new PDO("mysql:host=$db_host;dbname=$db_name;", $db_user, $db_pass,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); 

由於查詢:

function check_exist($query,$parameter) 
{ 
    try 
    { 
    $this->connect->prepare($query); 
    $this->connect->bindParam(':parameter', $parameter, PDO::PARAM_STR); 
    $this->connect->execute(); 
    return $this->connect->fetchColumn(); 


     unset ($query); 
    } 
    catch(PDOException $e) 
    { 
     echo $e->getMessage(); 
    } 

} 

Finaly號召性

$db = new database; 
$db->connect('framework','localhost','root',''); 
$result = $db->check_exist('SELECT COUNT(*) FROM cat_merge WHERE cat=:parameter',$cat); 
+1

示例代碼... –

+0

您需要發佈您的代碼。如果您正在使用具有參數化查詢/準備語句的PDO,則這不是問題。你不能混入'mysql _ *()'函數。 –

回答

3

嘗試使用預處理語句是這樣的:

<?php 
// Connect to the database 
$db = new PDO('mysql:host=127.0.0.1;dbname=DB_NAME_HERE', 'username', 'password'); 
// Don't emulate prepared statements, use the real ones 
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
// Prepare the query 
$query = $db->prepare('SELECT * FROM foo WHERE id = ?'); 
// Execute the query 
$query->execute($_GET['id']); 
// Get the result as an associative array 
$result = $query->fetchAll(PDO::FETCH_ASSOC); 
// Output the result 
print_r($result); 
?> 
+0

該OP使用準備好的語句。等到編輯完成後再回答。 –

+0

適合您使用這種準備好的陳述。 – Johnny000

+0

@ Johnny187好吧。你使用的是綁定參數。 –