LoneSimba
Нубило-всея-планеты
Привет всем формучанам. Когда-то уже писал сюда свой говнокод, тогда меня избили ссаными тряпками. Сейчас с MySql перешел на PDO, но встретился со следующей белибердой: при запросе через prepare\execute запрос возвращает пустой результат, а если через query - то стандартная выбока sql. Вот собсвтенно, как я это пишу:
приведенное возвращает такое:
Код:
class Database
{
private $db;
private $select_users;
private $error;
/**
* Database constructor
* @param $host Host address
* @param $db Database name
* @param $user Username
* @param $pass User password
*/
public function __construct($host, $db, $user, $pass)
{
try {
$this->db = new PDO('mysql:host='.$host.';dbname='.$db .';charset=utf8', $user, $pass, array(PDO::ATTR_PERSISTENT => true));
$this->prepare_query();
$this->db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
} catch(PDOException $e) {
print "Error: " . $e->getMessage() . "<br>";
die();
}
}
/**
* Database prepare_query
* Выполняет подготовку запросов
*/
private function prepare_query()
{
$this->select_users = $this->db->prepare("SELECT * FROM `users` WHERE ?"); //param1 - критерии;
}
public function login($login,$passw) {
if($login == "") {
echo "<p class='error'>Поле логин не заполнено!</p><br> <p><a href='#' onclick='showLoginField();'>Назад</a></p>";
$this->error = 1;
} else if(!preg_match('/[a-zA-Z0-9]/',$login)) {
echo "<p class='error'>Можно использовать только латинские буквы и цифры</p><br> <p><a href='#' onclick='showLoginField();'>Назад</a></p>";
$this->error = 1;
}
if($this->error == 0) {
$par = "login='Test'";
$this->select_users->execute([$par]);
$this->select_users->debugDumpParams();
$fetch = $this->select_users->fetchAll();
var_dump($fetch);
$passw = md5($passw);
if($passw != $fetch['password']) {
echo "<p class='error'>Введен неверный пароль!</p><br> <p><a href='#' onclick='showLoginField();'>Назад</a></p>";
return;
}
echo "Вход удачен!";
}
}
}
если же через обычный query -SQL: [29] SELECT * FROM `users` WHERE ? Params: 1 Key: Position #0: paramno=0 name=[0] "" is_param=1 param_type=2 array(0) { }
Notice: Undefined index: password in C:\xampp\htdocs\www\func\database.class.php on line 133
Введен неверный пароль!
Назад
SQL: [29] SELECT * FROM `users` WHERE ? Params: 1 Key: Position #0: paramno=0 name=[0] "" is_param=1 param_type=2 array(1) { [0]=> array(28) { ["user_id"]=> string(1) "1" [0]=> string(1) "1" ["login"]=> string(4) "Test" [1]=> string(4) "Test" ["name"]=> string(4) "Test" [2]=> string(4) "Test" ["mail"]=> string(10) "[email protected]" [3]=> string(10) "[email protected]" ["password"]=> string(32) "0cbc6611f5540bd0809a388dc95a615b" [4]=> string(32) "0cbc6611f5540bd0809a388dc95a615b" ["style_id"]=> string(7) "default" [5]=> string(7) "default" ["group_id"]=> string(4) "user" [6]=> string(4) "user" ["birthdate"]=> string(10) "2003-12-31" [7]=> string(10) "2003-12-31" ["regdate"]=> string(19) "2003-12-31 01:02:03" [8]=> string(19) "2003-12-31 01:02:03" ["lastin"]=> string(19) "2003-12-31 01:02:03" [9]=> string(19) "2003-12-31 01:02:03" ["avatar"]=> string(7) "default" [10]=> string(7) "default" ["banned"]=> string(1) "0" [11]=> string(1) "0" ["confirmed"]=> string(1) "1" [12]=> string(1) "1" ["cipher"]=> string(19) "2003-12-31 01:02:03" [13]=> string(19) "2003-12-31 01:02:03" } }
Notice: Undefined index: password in C:\xampp\htdocs\www\func\database.class.php on line 134
Введен неверный пароль!
Назад
Последнее редактирование модератором: