2016-06-28 2 views
0

Я нахожусь с ним с 2 дней и не могу понять это.MSSQL UPDATE работает, но INSERT не работает

Я работаю с PHP 5.5 ans MSSQL, и кажется, что я не могу вставить в какую-либо таблицу, тогда как обновление работает в этой таблице, а одна и та же вставка работает в другой таблице.

Конечно, я проверял у моего пользователя правильные права на эту таблицу.

Вот код, может быть, я тупой ...

// Establish connection 
try { 
    $pdo = new PDO(DSN, UID, PWD); 
} catch (PDOException $e) { 
    die("Error! ".$e->getMessage()); 
} 

$pdo->beginTransaction(); 

// Merge-like event 
try { 
    $updateStmt->execute(); 
    $rows = $updateStmt->rowCount(); 
    if($rows == 0) { 
     $insertStmt->execute(); 
    } 
} catch (Exception $e) { 
    $pdo->rollBack(); 
    die("Error! ".$e->getMessage()); 
} finally { 
    $insertHistoryStmt->execute(); 
    $pdo->commit(); 
} 

Все мои PDO отчётность объекты поправляет с подходящими значениями. У меня нет ошибки в INSERT, кажется, что он никогда не исполнялся в БД.

Пожалуйста, спросите, нужен ли вам больше кода для понимания. Я не хочу здесь размещать весь свой код и говорить «пожалуйста, сделайте мою работу».

Спасибо Я действительно застрял:/

+2

pdo по умолчанию возвращает логическое значение false при ошибке. Если вы явно не разрешаете исключения, единственное, что оно выбрасывает, - это попытка первоначального подключения. Поэтому ваш try/catch бесполезен, потому что ни одна из операций, которые вы делаете там, не создавала бы исключения в первую очередь. –

+0

Просто настройте PDO, как описано [здесь] (https://phpdelusions.net/pdo#errors), чтобы заставить его генерировать исключения. Также обратите внимание, что вы должны повторно выбросить исключение вместо того, чтобы убить scriipt вручную. –

+0

Спасибо. Я сделаю это завтра утром, я должен нажать приложение к производству сегодня вечером. Приятного вечера – Ben

ответ

0

Может быть, название моего вопроса не подходит теперь, когда я нашел источник ошибки. Но я пишу этот ответ, потому что это отличный учебник, который объясняет отладку различных ошибок от самих себя.

Если вы идете, бросьте любые ошибки PDO, следуйте this link, и вы найдете путь. Благодарим @Your Common Sense за то, что вы предлагаете метод изучения ошибок, а не готового к использованию решения.

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