До определенного момента все работало, после того, как сделал условия, перестало :с Ошибок не выдает, но с базой ничего не делает ни в одном из вариантов.
function addToDB($funcSteamId, $funcSteamVisits, $funcSteamFavs) {
$connection = new PDO('mysql:host=localhost;dbname=dev', 'root', 'root');
$query = $connection->prepare("SELECT COUNT(steamID) FROM guidesStats WHERE steamID=:inputID");
$query->execute(array(':inputID' => $funcSteamId));
$result = $query->fetchAll();
if ($result[0][0] == 1) {
echo "Запись с таким steamID уже существует, обновляю данные...";
$affectedRows = $connection->prepare('INSERT INTO guidesStats WHERE steamID=:inputID (visitors,favs) VALUES (:inputVisits, :inputFavs)');
$affectedRows->execute(array(':inputID' => $funcSteamId, ':inputVisits' => $funcSteamVisits, ':inputFavs' => $funcSteamFavs));
}
if ($result[0][0] < 1) {
$affectedRows = $connection->exec('INSERT INTO guidesStats (steamID,visitors,favs) VALUES (' . $funcSteamId . ',' . $funcSteamVisits . ',' . $funcSteamFavs . ')');
echo "Добавлена запись в БД";
}
if ($result[0][0] > 1) {
echo "В БД >1 записи";
}
return 0;
}
Примеры var_dump($result):
Для $funcSteamId = 1
array(1) { [0]=> array(2) { ["COUNT(steamID)"]=> string(1) "3" [0]=> string(1) "3" } }
Для $funcSteamId = 7
array(1) { [0]=> array(2) { ["COUNT(steamID)"]=> string(1) "0" [0]=> string(1) "0" } }
Для $funcSteamId = 1120193385
array(1) { [0]=> array(2) { ["COUNT(steamID)"]=> string(1) "1" [0]=> string(1) "1" } }
Вот так выглядит моя БД:
Попробуйте переписать обращения к базе в усовиях по примеру до условий. В 2 шага prepare и execute. Можно добавить try для поимки ошибок.
$zapros = 'INSERT INTO DB ($value[0], $value[1]) VALUES';
try {
$var = $connection->prepare($zapros);
$var->bindValue (0, $value[0])
$var->bindValue (1, $value[1])
$var->execute();
} catch (Exception $e) {
echo "Запрос не очень..";
$error_output = $connection->errorInfo();
//либо trigger_error('Wrong SQL: ' . $connection. ' Error: ' . $e->getMessage(), E_USER_ERROR);
};
if(isset($error_output)) print_r($error_output);
если не секрет, то зачем в конце return false? Если ничего не нужно возвращать, то можно удалить строку return целиком. Если есть возможность, для теста, попробуйте этот же код только без переменных, просто напишите запрос текстом и посмотрите на результат, если заработает, то добавите переменные.
Вместо
$query = $connection->prepare("SELECT COUNT(steamID) FROM guidesStats WHERE steamID=:inputID");
уберите COUNT
$query = $connection->prepare("SELECT steamID FROM guidesStats WHERE steamID=:inputID");
передавать нужно просто массив с данными, не нужно писать для ключа :
Пишите просто название ключа и все. В execute я имею ввиду.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Ребят, приветНе могу разобраться в проблеме PhpStorm
Есть цикл ForeachОн добавляет строку в ячейку (в БД) Сам запрос лежит в цикле
Имеется родительская страница на которой выводятся посты 'post_type' => 'employee' содержащие часть информации из поста (фото + имя)