PDO является аббревиатурой PHP Data Objects. PDO - это надежный, последовательный способ доступа к базам данных. Это означает, что разработчики могут писать переносной код намного проще. PDO не является абстракционным слоем, как PearDB. PDO больше похож на уровень доступа к данным, который использует унифицированный API (Application Programming Interface). Вы в основном есть два варианта для достижения этой цели:
Пример:
$qry = $con->prepare('SELECT * FROM student WHERE name = :name');
$qry->execute(array('name' => $name));
foreach ($qry as $get) {
// do something with $get
}
Настройка базы данных с использованием PDO
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
источника данных является в основном строка опций, которые говорят PDO, какой драйвер использовать , и подробности соединения ... Вы можете найти все варианты здесь PDO MYSQL DSN.
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username,$password);
Примечание: Если вы получаете ошибку о наборах символов, убедитесь, что вы добавляете параметр кодировки в DSN. Добавление кодировки к DSN очень важно по соображениям безопасности, большинство примеров, которые вы увидите, оставьте это. УБЕДИТЕСЬ, ЧТОБЫ ВКЛЮЧАТЬ ШАРС!
Вы можете также установить некоторые атрибуты после PDO строительства с методом SetAttribute:
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests");
$stmt->execute();
// set the resulting array to associative
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
echo $v;
}
То, как атаки типа впрыска работать, является каким-то образом получать переводчик (база данных), чтобы оценить что-то, что должно были данные, как если бы это был код. Это возможно только в том случае, если вы смешиваете код и данные в одном и том же средстве (например, когда вы строите запрос в виде строки). Запроски, связанные с параметрами, работают, отправляя код и данные отдельно, поэтому никогда не удастся найти отверстие в что.
Вы должны использовать подготовленные заявления: http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers – awl19
Это SQL Injection, и да, это плохо. Как упоминалось в @ awl19, используйте подготовленные инструкции или используйте библиотеку, такую как MeekroDB (http://meekro.com/), чтобы запускать ваши запросы (это также облегчило бы работу с базой данных). – mwieczorek