2015-11-09 9 views
0

Я пытаюсь получить простую вставку PDO для работы. Я успешно создал накладной mydb10 с использованием PDO, а следующая часть, которую я хочу сделать, - это вставить данные в эту таблицу. Запуск сценария не возвращает никаких ошибок (исключение режима ошибки PDO включено), но таблица по-прежнему содержит нулевые значения.Simple PDO write not working

Я использую локальный сервер для запуска файла PHP и подключаюсь к базе данных Amazon RDS. В настоящее время весь входящий трафик через SSH, HTTP, HTTPS, и MYSQL разрешается через группу безопасности в базах данных

$link = new PDO("mysql:host=$dbhost;dbname=$dbname",$username,$password); 

$statement = $link->prepare("INSERT INTO mydb10 (selectedMain, selectedSide) 
    VALUES(:selectedMain, :selectedSide)"); 

$statement->execute(array(
    "selectedMain" => "test", 
    "selectedSide" => "test2" 
)); 

Это может быть глупо, но я застрял на некоторое время теперь и любая помощь приветствуется. Если вам нужна дополнительная информация, сообщите мне. Я пытаюсь использовать PHP в своем приложении, но не могу даже заставить этот простой тест работать, поэтому он немного обескураживает.

EDIT # 1

Этот фрагмент является частью большего файла. Я могу успешно подключиться к базе данных с моими учетными данными и создать новые таблицы на сервере. У меня есть отчет об ошибках PDO, включенный в режиме исключения, и он помог мне обработать ошибки синтаксиса, но я больше не получаю никаких ошибок при запуске кода. Ошибок в журнале сервера MYSQL также нет.

Я могу предоставить любую дополнительную информацию, которая может быть полезна при отладке при желании.

+6

Включить 'error_reporting' и, например, 'PDO :: ERRMODE_EXCEPTION'. – mario

+1

В: Есть ли ошибки в вашем журнале mySQL? Или [PDO :: errorInfo()] (http://php.net/manual/en/pdo.error-handling.php)? Если да, скопируйте/вставьте их в свой пост. ТАКЖЕ: посмотрите этот пост: [PHP insert statement не работает] (http://stackoverflow.com/questions/15316672/insert-statement-not-working-using-executearray-of-pdo-extension) – paulsm4

+0

Голосование закрывается до была предоставлена ​​дополнительная информация об усилиях по отладке. Без этого невозможно узнать, какая из нескольких разных проблем - плохой настройке соединения с БД, плохие ссылки на объект схемы БД и т. Д. - может вызвать проблемы. Как правило, хотя вам НЕ нужно предполагать, что ваш код всегда будет следовать счастливому пути. Вам нужны условия обработки ошибок вокруг экземпляра объекта PDO, подготовка инициированного оператора, выполнение запроса и т. Д. С возможностью регистрации ошибок, которые могут привести к тому, что выполнение кода не будет продолжаться так, как ожидалось. –

ответ

0

Прежде всего вам необходимо правильно установить соединение с базой данных MySQL. Вы можете написать этот код sql.php:

<?php 
    $ServerName = "******"; 
    $Username = "******"; 
    $Password = "******"; 
    $DataBase = "******"; 

    try { 
    $CONN = new PDO("mysql:host=$ServerName; dbname=$DataBase", $Username, $Password); 
    $CONN->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    $CONN->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } catch(PDOException $e) { 
    echo "Connection failed: " . $e->getMessage(); 
    } 
?> 

Теперь, когда вы правильно установить соединение, необходимо выполнить SQL, но перед этим вам необходимо включить sql.php:

try { 
    $SQL = 'INSERT INTO MyDB10 (SelectedMain, SelectedSide) VALUES(:SelectedMain, :SelectedSide)'; // Write SQL Query to variable 
    $SQL = $CONN->prepare($SQL); // Prepare SQL Query 
    $SQL->execute(array('SelectedMain' => 'Test', 'SelectedSide' => 'Test2')); // Execute data to Insert in MySQL Databse 
    } catch(PDOException $e) { 
    echo "Error: " . $e->getMessage(); 
    } 

Когда вы закончите все запросы необходимо закрыть соединение с:

$CONN = null; 
+0

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

+0

Смотрите эти пробелы в DSN, они вызовут соединение потерпеть неудачу. Кроме того, выброс ценной информации в исключение - это не способ найти ошибки. Избегайте перехвата исключений только для отображения небольшого количества информации; просто позвольте исключению идти uncaught – Phil

+0

@Phil Я новичок в PHP, какая часть моего кода отображает только небольшое количество информации об ошибке? Я бы действительно хотел увидеть больше информации, если она доступна. – Sbfussy