2013-11-30 2 views
-1

Я новичок в PDO и пытаюсь преобразовать существующий код PHP/MYSQL для соответствия стандартам PDO.Перенос кода MySQL в PDO

Проблема у меня есть, я могу подключиться к базе данных, но результаты не отображаются и никаких ошибок не отображается.

Это моя база данных:

$db2 = new PDO('mysql:host=localhost;dbname=DATABASENAME;charset=utf8', 'USERNAME', 'PASSWORD'); 
$db2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$db2->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

Я использую

include 'db.php'; 

включить вышеуказанные детали базы данных в моей основной PHP скрипт.

Мой главный скрипт, используя следующие в качестве оператора выбора, чтобы отобразить строки, которые соответствуют критериям:

<? 

foreach($db2->query('SELECT view_invoice FROM user_info where username = "$timeapp_username"') as $inrow) { 
$inrow['view_invoice']; //etc... 

} 

?> 

На это работает я не получаю никаких ошибок, но не отображается никаких результатов. Я не могу понять, что я делаю неправильно. Может ли кто-нибудь сообщить, что я делаю неправильно здесь?

+0

При подключении, поместите вызов в Try ... Catch блока: 'попробовать { \t $ db2 = новый PDO ('MySQL: хост = локальный; имя_бд = DATABASENAME; Charset = utf8', ' ИМЯ ПОЛЬЗОВАТЕЛЯ ПАРОЛЬ'); } catch (PDOException $ e) { print "Ошибка !:". $ e-> getMessage(). "
"; die(); } 'дайте нам знать результаты – user4035

+0

К сожалению, такие вопросы, как« Мой код не работает », являются оффтопическими. Stack Overflow не является средством отладки онлайн. –

+1

Hi user4035 это не работает. Я могу подключиться к базе данных и получить подтверждение этого, просто не уверен, где я ошибаюсь. – Sandy

ответ

1

Функция запроса небезопасен и должен использоваться только для запросов, которые не будут возвращать данные, как UPDATE, DELETE, INSERT ...

Для того, чтобы безопасно и работает SELECT, запросы, подготовить запрос с PDOStatement. См:

//Example querystring 
$id = $_GET['id']; 

try{ 
//Instantiate PDO 
$pdo = new PDO('dsn', 'user', 'password'); 

//Create the statement 
$statement = $pdo->prepare("SELECT * FROM `my_table` WHERE `id`=:id"); 

//Now you can bind values to the statement. This will automatically escape the values 

//Defines the type of the value that you'll bind (optional) 
$data_type = (is_numeric($id)) ? PDO::PARAM_INT : PDO::PARAM_STR; 

//Replace the :id in the query by the value retrieved from the querystring 
$statement->bindValue(':id', $id, $data_type); 

//Now, let's execute our statement 
$statement->execute(); 

//If the query has returned any rows, we can iterate over it 
if ($statement->rowCount() > 0) 
{ 
    foreach ($statement->fetchAll() as $result) 
    { 
     //Now you can retrieve the values using the defined fetch method. 
     //Example with associative fetch mode: 
     echo 'My name is '.$result['name']."!"; 
     echo '<br />'; 
    } 
} 
else 
{ 
    //No results found 
} 

} catch (PDOException $pe){ 
    die("An error has occurred: ".$pe->getMessage()); 
} 
+1

Спасибо, что нашли время, чтобы помочь мне, Байт Бит, очень ценится. – Sandy

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