0

関数のパラメーターとして渡された文字列内の CHAR(10) を "\n" に置き換えた後、新しい文字列を返したい:

function executerCalcul($initial_string)
{
   $ret = "";
   $conn = new mysqli(BDD_SERVER, BDD_USER, BDD_PWD, BDD_NAME);
   if ($conn->connect_error) {
        trigger_error('Database connection failed: '  . $conn->connect_error, E_USER_ERROR);
   }
   if (stripos($initial_string, "'") === false)
        $sql = "SELECT REPLACE('$initial_string', char(10 using utf8),'\n') as resultat";
   else
   {
        // how to write correctly $sql here because we are here in the case when there are single quotes inside the string parameter
   }
   $rs = $conn->query($sql);

   if($rs === false) {
        trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $conn->error, E_USER_ERROR);
    } else {
                $rows_returned = $rs->num_rows;
    }
    $rs->data_seek(0);
    while($row = $rs->fetch_assoc()) {
        $ret .= $row['resultat'];
    }
    $rs->free();
    return $ret;
}

では、文字列パラメーターに一重引用符が含まれている場合に一重引用符をエスケープする方法は?

4

2 に答える 2

1

ドキュメント に示されているように、組み込み関数を使用します

例えば:

$new_query = $conn->real_escape_string($query);

その後、SQL を通常どおり実行します。

于 2013-06-28T12:33:33.677 に答える
1

SQL標準内では、二重引用符 ''を使用する必要があります。

しかし、機能はまだありmysql_real_escape_stringます。

于 2013-06-28T12:33:54.113 に答える