Я пытаюсь сделать простую функцию для массива insert в моей базе данных с PDO.Что не так с моим запросом PDO?
<?php
require_once($_SERVER["DOCUMENT_ROOT"] . '/include/config/database.php');
/**
* Database
*/
class Database {
function __construct()
{
}
function insertArray($array, $table)
{
global $bdd;
$i = 1;
foreach ($array as $key => $currVal)
{
if ($i == count($array))
$keyVal .= ':'.$key;
else
$keyVal .= ':'.$key.', ';
$i++;
}
$arrayKeyValue = implode(", ", array_keys($array));
$req = $bdd->prepare('INSERT INTO '.$table.'('.$arrayKeyValue.') VALUES('.$keyVal.')');
$req->execute($array);
die('DONE');
}
}
?>
Но никаких данных не вставлены, и я не имею никакой ошибки в PHP или с ошибкой п.д.о. ...
Кто-то знает, что я делаю не так?
благодаря
PS: Извините за мой плохой английский
установка SQL & подключение
<?php
error_reporting(E_ALL);
$bdd = new PDO('mysql:host=localhost;dbname=csgo', 'csgo', 'password removed', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING));
?>
содержимое переменной: запрос
$array
array(5) {
["screen_name"]=>
string(4) "test"
["avatar_big"]=>
string(15) "test_avatar.png"
["avatar_small"]=>
string(16) "small_avatar.png"
["steam_id"]=>
int(991)
["last_connection"]=>
int(156121)
}
$keyVal
string(69) ":screen_name, :avatar_big, :avatar_small, :steam_id, :last_connection"
$arrayKeyValue
string(64) "screen_name, avatar_big, avatar_small, steam_id, last_connection"
SQL:
INSERT INTO user(screen_name, avatar_big, avatar_small, steam_id, last_connection) VALUES(:screen_name, :avatar_big, :avatar_small, :steam_id, :last_connection)
Какова фактическая строка SQL, передаваемая 'prepare'? –
PDO по умолчанию ошибочно отключится. Задайте свой объект '$ bdd' для исключения исключений в' database.php' после подключения: '$ bdd-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);' –
'... VALUES (" '. $ keyVal. '")');' Вам не хватает '' '(кавычки) вокруг значений –