2015-03-21 4 views
-2

Я прочитал все сообщения, которые я могу про апострофы, и я все еще в неведении. В этом коде я пытаюсь удалить запись, содержащую апостроф и пробел. Я не могу удалить его. Код работает отлично, если не существует апострофа. Я работаю в php/dbo, работая с базой данных MSSql. Я удалил пароль и имя пользователя из кода примера.PHP - PDO - 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

Я не думаю, что вам нужно заменить апостроф с двойным апострофом:

$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 будет заботиться о том, что для вас. Вероятно, выполнение этого утверждения передается «tom» «tom» в качестве значения: id. Попробуйте удалить вызов str_replace.

Смежные вопросы