Вот собственно запрос к бд: include ("base.php"); preparedStatement = $db->prepare('SELECT * FROM users WHERE id = :id'); $preparedStatement->execute(array(':id' => $id)); $row = $preparedStatement->fetchAll(); echo "$row[name]"; Выводит ошибку в первой же строке...
$db->prepare('SELECT * FROM users WHERE name=:name'); $db->execute(array(':name'=>john,)); $result = $db->fetchAll(); $stmt = $db->prepare(“SELECT * FROM users WHERE id=?”); $stmt->execute(array($_GET[‘id’])); $stmt->fetch(PDO::FETCH_ASSOC);
Все равно выдает ошибку: Fatal error: Call to a member function prepare() on a non-object in Z:\home\wwe.com\www\page.php on line 4 Я хочу сделать безопасный запрос от sql инъекции, может можно по другому???
Дело не в двоеточии. Запись с двоеточием является корректной. Просто PHP говорит, что вы пытаетесь вызвать метод prepare у переменной которая не является объектом. У вас неверно установлено соединение
а ведь и с двоеточие можно, мда привычка. Остается как сказано коннект. http://php.ru/manual/pdo.connections.html Example #2
А как правильно установить соединение? у меня так: $db = mysql_connect ("localhost","root",""); mysql_select_db ("baza",$db);
C PDO ниразу пока не работал, как правильнее подключиться... try { $dbh = new PDO('mysql:host=localhost;dbname=baza', $login, $password); foreach($dbh->query('SELECT * from users') as $myrow) { print_r($myrow); } $dbh = null; } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br/>"; die(); } так не получилось....
ainur777, то есть установив соединение процедурно еще и с устаревшим расширением mysql, вы пытаетесь обратиться к объекту в котором вообще его нет? Где логика?
Код (PHP): $dbh = new PDO('mysql:host=localhost;dbname=baza', $login, $password); $myrow = $dbh->query('SELECT * from users'); //$res = $myrow->fetchALL(); $res = $myrow->fetchALL(PDO::FETCH_ASSOC); echo '<pre>'; print_r( $res); echo '</pre>';
Автор, а у тебя в скрипте много таких запросов? Может быть проще переписать под подключение с помощью mysql_connect? =)
Код (PHP): $dbh = new PDO('mysql:host=localhost;dbname=baza', $login, $password); $myrow = $dbh->query('SELECT * from users'); //$res = $myrow->fetchALL(); $res = $myrow->fetchALL(PDO::FETCH_ASSOC); echo '<pre>'; print_r( $res); echo '</pre>'; [/quote] Ошибка Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[28000] [1045] Access denied for user 'mylogin'@'localhost' (using password: YES)' in Z:\home\wwe.com\www\office.php:26 Stack trace: #0 Z:\home\wwe.com\www\office.php(26): PDO->__construct('mysql:host=loca...', 'mylogin', 'e329d6dbebb94cd...') #1 {main} thrown in Z:\home\wwe.com\www\office.php on line 26
[vs], ты чего такое советуешь. автор, никогда не логинься рутом! права надо выставлять правильные на нужного пользователя, только и всего. возможно ты указал имя базы, которой вообще не существует. когда тупо копируешь не вникая, так и получается — косяк на косяке. читай документацию про каждую используемую функцию!!!
это не совет, а работающий вариант. ТС же пишет: кстати про функции mysql_. С драйвером mysqlnd эти функции работают эффективно. Поэтому автор, если у тебя PHP >5.3, париться с pdo совсем не обязательно.