Я озадачен этой проблемой часами. У меня есть PHP-код с использованием PDO для доступа к базе данных Sybase. Проблема в том, что функция rowCount()
постоянно возвращает значение -1
. Я нашел решение здесь PDO::rowCount() returning -1, и пользователь поставил параметр PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL
во время подготовки запроса. Это решение работает для него, но по какой-то причине не для меня. Цените, если вы, ребята, можете мне помочь в этом.PDO rowCount возвращает -1 с PDO :: ATTR_CURSOR => PDO :: CURSOR_SCROLL
Вот мой код:
public function query($sql, $params = array()){
$this->_error = false; //always first initialize to false
if($this->_query = $this->_pdo->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL))){
$x = 1;
if(count($params)){
foreach($params as $param){
$this->_query->bindValue($x, $param);
$x++;
}
}
if($this->_query->execute()){
$this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
echo $this->_count = $this->_query->rowCount(); //this line returns -1
} else {
$this->_error = true;
}
}
return $this;
}
Я сделаю вызов этой функции, используя что-то вроде этого:
$data = $this->_db->query("SELECT username FROM users WHERE username=?", array($user));
Спасибо.
Чтение документов php, rowCount, используемых для удаления, вставки, обновления, если вам нужно количество возвращаемых строк, почему вы не используете функцию count()? – Axel
@Axel благодарим вас за ответ. Я использую функцию для всех запросов SELECT, INSERT, UPDATE, DELETE. Поэтому я стараюсь придерживаться этой функции для всех типов операторов. Как использовать функцию count(). Вы имеете в виду подсчет самого результата? – UserProg