Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: проблемы с PDO: Warning: Invalid argument supplied for foreach() in
 
 автор: (Sandr)   (28.08.2011 в 13:39)   письмо автору
 
 

В первые начал работать с ПДО.
Вот код
<?php
$pass 
123;
$name 'username';
$dbh = new PDO("mysql:host=localhost; bdname=base",$name$pass);
if(!
$dbh) {
    exit(
'Соединение не установлено');
}
$sql "SELECT * FROM `users`";
foreach (
$dbh->query($sql) as $row)
    echo 
$row['name'];
?>

Пишет Warning: Invalid argument supplied for foreach() in Z:\home\test1.ru\www\1.php on line 9
Подскажите, что не так?

  Ответить  
 
 автор: Jovidon   (28.08.2011 в 14:12)   письмо автору
 
   для: (Sandr)   (28.08.2011 в 13:39)
 

Неверны аргумент для цикла foreach()
Попробуй так.

<?php 
$pass 
123
$name 'username'
$dbh = new PDO("mysql:host=localhost; bdname=base",$name$pass); 
if(!
$dbh)     exit('Соединение не установлено'); 

$sql "SELECT * FROM `users`"
foreach (
$sql as $row
    echo 
$row['name'];
?>

  Ответить  
 
 автор: (Sandr)   (28.08.2011 в 14:29)   письмо автору
 
   для: Jovidon   (28.08.2011 в 14:12)
 

Так тоже не работает(

  Ответить  
 
 автор: julpierto   (28.08.2011 в 14:13)   письмо автору
 
   для: (Sandr)   (28.08.2011 в 13:39)
 

Может так будет работать?
foreach ($dbh=>query($sql) as $row) 

  Ответить  
 
 автор: (Sandr)   (28.08.2011 в 14:30)   письмо автору
 
   для: julpierto   (28.08.2011 в 14:13)
 

Тоже не работает. Да и не должно, ведь мы вызываем метод, а методы вызываются с помощью ->

  Ответить  
 
 автор: Drago   (28.08.2011 в 15:39)   письмо автору
 
   для: (Sandr)   (28.08.2011 в 13:39)
 

dbname=base

  Ответить  
 
 автор: (Sandr)   (28.08.2011 в 16:51)   письмо автору
 
   для: Drago   (28.08.2011 в 15:39)
 

Точно!)) Спасибо)

  Ответить  
 
 автор: (Sandr)   (28.08.2011 в 17:07)   письмо автору
 
   для: (Sandr)   (28.08.2011 в 13:39)
 

Ребят, ещё есть пара вопросов..
1. Есть код
$sql = "SELECT * FROM `users` WHERE `name` = $name";
foreach ($dbh->query($sql) as $row)
    echo $row['name']; 


Как защититься от sql-иньекции в данном случае?

2. подскажите аналог этого кода в пдо:
$res = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE id = '".mysql_real_escape_string($x)."'"));
echo $res['name'];

  Ответить  
 
 автор: cheops   (29.08.2011 в 10:29)   письмо автору
 
   для: (Sandr)   (28.08.2011 в 17:07)
 

>Как защититься от sql-иньекции в данном случае?
Как формируется переменная $name?

PS Под новые вопросы лучше заводить новые темы.

  Ответить  
 
 автор: (Sandr)   (29.08.2011 в 11:34)   письмо автору
 
   для: cheops   (29.08.2011 в 10:29)
 

$name = $_POST['name'];
или
$name = $_GET['name'];

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования