Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: PDO
Форумы портала PHP.SU » » Вопросы новичков » PDO

Страниц (1): [1]
 

1. Нуб-2 - 05 Сентября, 2017 - 19:18:02 - перейти к сообщению
До определенного момента все работало, после того, как сделал условия, перестало :с
Ошибок не выдает, но с базой ничего не делает ни в одном из вариантов.
PHP:
скопировать код в буфер обмена
  1. function addToDB($funcSteamId, $funcSteamVisits, $funcSteamFavs) {
  2.  
  3.     $connection = new PDO('mysql:host=localhost;dbname=dev', 'root', 'root');
  4.  
  5.     $query = $connection->prepare("SELECT COUNT(steamID) FROM guidesStats WHERE steamID=:inputID");
  6.     $query->execute(array(':inputID' => $funcSteamId));
  7.     $result = $query->fetchAll();
  8.  
  9.     if ($result[0][0] == 1) {
  10.         echo "Запись с таким steamID уже существует, обновляю данные...";
  11.         $affectedRows = $connection->prepare('INSERT INTO guidesStats WHERE steamID=:inputID (visitors,favs) VALUES (:inputVisits, :inputFavs)');
  12.         $affectedRows->execute(array(':inputID' => $funcSteamId, ':inputVisits' => $funcSteamVisits, ':inputFavs' => $funcSteamFavs));
  13.     }
  14.     if ($result[0][0] < 1) {
  15.         $affectedRows = $connection->exec('INSERT INTO guidesStats (steamID,visitors,favs) VALUES (' . $funcSteamId . ',' . $funcSteamVisits . ',' . $funcSteamFavs . ')');
  16.         echo "Добавлена запись в БД";
  17.     }
  18.     if ($result[0][0] > 1) {
  19.         echo "В БД >1 записи";
  20.     }
  21.     return 0;
  22. }


Примеры var_dump($result):
Для $funcSteamId = 1
CODE (htmlphp):
скопировать код в буфер обмена
  1. array(1) { [0]=> array(2) { ["COUNT(steamID)"]=> string(1) "3" [0]=> string(1) "3" } }

Для $funcSteamId = 7
CODE (htmlphp):
скопировать код в буфер обмена
  1. array(1) { [0]=> array(2) { ["COUNT(steamID)"]=> string(1) "0" [0]=> string(1) "0" } }

Для $funcSteamId = 1120193385
CODE (htmlphp):
скопировать код в буфер обмена
  1. array(1) { [0]=> array(2) { ["COUNT(steamID)"]=> string(1) "1" [0]=> string(1) "1" } }
2. Sail - 09 Сентября, 2017 - 00:43:19 - перейти к сообщению
Нуб-2
В 10 строке - "обновляю данные", а в 11-й: INSERT. Непорядок.
Для случая вставки новой записи (<1) проверьте $affectedRows. Можно использовать PDOException (если уж не смотрите логи, которые веб-сервер пишет) для уточнения проблемы в случае ошибок при записи в базу.
3. LIME - 09 Сентября, 2017 - 04:23:01 - перейти к сообщению
///

 

Powered by ExBB FM 1.0 RC1