2012-11-18 73 views
0

我正在將我的網站從mysql_ *方法遷移到mysqli。mysqli插入帶有引號和其他字符的數據

當我用mysql數據是這樣的:

$variable = <<<eot 
    "asdasd" hello 'name name' 
    // 
    \\ 
    "end" 
eot; 

插在數據庫就像如下:

"asdasd" hello 'name name' 
    // 
    \ 
    "end" 

,這是非常確定。

現在它插入相同的數據,如下列:

\"asdasd\" hello \'name name\'\r\n // \r\n \\\r\n \"end\" 

誰能告訴我如何保持將東西放進分貝的老辦法。我不需要\和\ r和\ n,我猜這些事情。謝謝

+0

不是那些相同的字符串?它只是輸出不處理它們相同。 – ethrbunny

回答

0

我看不出有什麼區別。

表定義:

create table test (s text) 

PHP測試源:

<?php 
$variable = <<<eot 
    "asdasd" hello 'name name' 
    // 
    \\ 
    "end" 
eot; 

// mysql version 
$conn = mysql_connect('localhost', 'USERNAME', 'PASSWORD'); 
mysql_select_db('test', $conn); 
$sql = "insert into test values ('" . mysql_escape_string($variable) . "')"; 
$result = mysql_query($sql, $conn); 

// mysqli version 
$conn = mysqli_connect('localhost', 'USERNAME', 'PASSWORD', 'test'); 
$sql = "insert into test values ('" . mysql_escape_string($variable) . "')"; 
$result = mysqli_query($conn, $sql); 

// mysqli version (prepared statement) 
$conn = new mysqli('localhost', 'USERNAME', 'PASSWORD', 'test'); 
$sql = 'insert into test values (?)'; 
$sth = $conn->prepare($sql); 
$sth->bind_param('s', $variable); 
$result = $sth->execute(); 

每個版本產生在表中的同一條目。所以,這只是你有的不同的輸出,或者你的代碼做了一些不同的事情。

相關問題