Надеюсь, кто-нибудь сможет мне помочь, потому что я всю ночь бился головой об стену, пытаясь решить эту маленькую проблему.
Я хочу вставить данные в базу данных, используя PDO (который япо общему признанию не самый осведомленный о).Я использую утверждение, которое я использовал много раз в прошлом, но по какой-то причине на этот раз оно не работает.Утверждение таково:
$userID = "Johnny5";
$sql = "INSERT INTO user_info(user_id) VALUES(:user-id)";
if($stmt = $this->_db->prepare($sql))
{
$stmt->bindParam(":user-id", $userID, PDO::PARAM_STR);
$stmt->execute();
$stmt->closeCursor();
return TRUE;
} else {
return FALSE;
}
Но, к сожалению, это всегда возвращает TRUE
, не вводя ничего в мою базу данных.Я пробовал каждую комбинацию изменений в утверждении, которое мог придумать, но все еще в растерянности.
Я надеюсь, что кто-то там может указать на действительно простую ошибку, которую я сделал.
Кроме того, размещение одинарных кавычек вокруг параметра :user-id
в строке $sql
является единственнымспособ, которым я могу заставить что-либо появляться в базе данных, но это, очевидно, не вводит никаких фактических данных в базу данных.
EDIT Я также изменил типы параметров PDO с PDO::PARAM_STR
до PDO::PARAM_INT
, но все еще не повезло.
После дальнейшего расследования execute()
возвращает FALSE
.
Решение Спасибо всем за ихруководство.@Nabeel правильно сказал, что не следует использовать заполнители в параметрах PDO.