2016-07-26 3 views
-2

Итак, я решил, что пришло время модернизировать мой код, обновив часть моего сценария от mysql до PDO. Я использовал последние дни, пытаясь лучше узнать PDO, но я не могу связать примеры, которые я нашел в моем скрипте.Преобразование из mysql в PDO

Подключение к базе данных:

mysql_connect('localhost', 'root', '') or die ('The server is facing issues at the moment'); 
mysql_select_db('openchat') or die('Problem with connecting to the database'); 

функция Php с подключением к БД включены:

function user_exists($username) { 
    $username = sanitize($username); 
    return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `user` WHERE `username` = '$username'"), 0) == 1) ? true : false; 
} 

Функция проверяет, если пользователь уже существует, где $ имя пользователя является посланных имя пользователя в форме, и функция проверяет, принято ли имя пользователя или нет. Я просто показывает небольшую часть кода, так что я надеюсь, что это достаточно информации, чтобы получить код :)

Update
Я думаю, что я finnaly сделали обновленную версию, которая работает!

try { 
    $db = new PDO('mysql:host=127.0.0.1;dbname=openchat', 'user', 'user123'); 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} catch(Exception $e) { 
    die('The server is facing issues' . '</br>' . $e->getMessage()); 
} 

function test() { 
    global $db; 
    $query = $db->query("SELECT COUNT(`user_id`) FROM `user` WHERE `username` = 'testbruker'"); 
    $result = $query->fetchColumn(); 

    return ($result == 1) ? true: false; 
} 
+0

Google это и вы найдете миллионы примеров. –

+0

Пожалуйста, попробуйте сделать это первым. здесь http://php.net/manual/en/pdo.connections.php вы можете найти, как подключиться к базе данных с PDO. Вы также можете найти много примеров SELECT :), если вы потерпите неудачу, мы поможем вам. Вы не учитесь, если не пытаетесь. Кстати: похоже, ваш скрипт ** уязвим ** к sql-injection! – Danielius

+1

@ Danielius Просто интересно, не будет ли «sanitise» потенциально исправить SQL-инъекцию? Не то, что это хорошо, все еще довольно небезопасно, но это не похоже на прямую проблему. – somethinghere

ответ

1

Вы можете попробовать что-то в этом роде. Но я рекомендую вам хранить информацию о БД в безопасном месте. Но это должно делать работу.

try{ 
    $db = new Database($host,$username,$password,$database);  
    $user = 'This user'; 
    $sql = "SELECT COUNT (user_id) FROM users WHERE username = ?;"; 
    $result = $db->prepare($sql); 
    $result ->execute(array($user)); 
    if ($result ->rowCount() > 0) { 
     echo 'The user is present'; 
    } else { 
     echo 'There is nothing'; 
    } 
} 
catch (Exception $e){ 
    die('Error : ' . utf8_encode($e->getMessage())); 
} 
+0

У меня на самом деле есть соединение с базой данных в отдельном файле, я просто включил его здесь, чтобы сделать его проще :) –

+0

Один вопрос. Что означает пользователь $. Функция проверяет, существует ли пользователь, где $ username - это вывешенное имя пользователя в форме, а функция проверяет, берется ли имя пользователя или нет. –

+0

@ReinBentdal $ user - это переменная, которая содержит имя пользователя, которое вы хотите проверить в БД , $ username - ваш логин для подключения PDO. С PDO, каждый '?'в запросе заменяются значениями в массиве, указанном в' $ result -> execute (array ($ user)); ' – Raccoon

Смежные вопросы