PHP - PDO - MSSQL和删除撇号

时间:2015-03-21 00:37:08

标签: php sql-server pdo

我已经阅读了所有关于撇号的帖子,而且我还在黑暗中。在此代码中,我试图删除包含撇号和空格的记录。我无法删除它。除非有撇号,否则代码工作正常。我在php / dbo中使用MSSql数据库。我已从示例代码中删除了密码和用户名。

    <?php 
    $attrs = array(PDO::ATTR_PERSISTENT => true);
    $pdo = new PDO("dblib:host=Server;dbname=Aer;charset=utf8", "", "");
    $pdo->exec('SET CHARACTER SET utf8');

    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $TestString="tom's tom";
    $TestString = str_replace("'", "''", $TestString) ;
    try {
        $stmt = $pdo->prepare('DELETE FROM JNO_Clubs WHERE Club = :id');
        $stmt->bindValue(':id',$TestString, PDO::PARAM_STR);
        $stmt->execute();
            } catch(PDOException $e) {
     echo 'Error: ' . $e->getMessage();
    }
    ?>

我尝试过有线和无线:

$TestString = str_replace("'", "''", $TestString) ;

如果你能帮助我,我将非常感激。

1 个答案:

答案 0 :(得分:1)

我认为你不需要用双撇号替换撇号:

$TestString="tom's tom";
 $TestString = str_replace("'", "''", $TestString) ;
 try {
    $stmt = $pdo->prepare('DELETE FROM JNO_Clubs WHERE Club = :id');
    $stmt->bindValue(':id',$TestString, PDO::PARAM_STR);

因为我打算调用bindValue会为你处理这个问题。该声明的执行很可能正在通过&#34; tom&#39;&#39;&#39;&#39;&#39;&#39; in作为值:id。尝试删除对str_replace的调用。