0

Web サイトを mysql_* メソッドから mysqli に移行しています。

私がmysqlを使用していたとき、次のようなデータ:

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

次のようにデータベースに挿入されました:

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

そして、それは非常にOKでした。

これで、次のように同じデータが挿入されます。

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

データベースに物事を挿入する古い方法を維持する方法を教えてください。\ と \r と \n などは必要ありません。ありがとう

4

1 に答える 1

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();

すべてのバージョンで、テーブルに同じエントリが生成されます。したがって、これはあなたが持っている単なる異なる出力であるか、あなたのコードは何か違うことをします。

于 2012-11-18T16:27:45.563 に答える