- iPhone topik
- Szívós, szép és kitartó az új OnePlus óra
- Samsung Galaxy S25 - végre van kicsi!
- Megérkezett Európába az Oppo vékony órája
- One mobilszolgáltatások
- Telekom mobilszolgáltatások
- Samsung Galaxy Watch8 - Classic - Ultra 2025
- Szintet lép a Xiaomi Apple másolásban?
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Kiszivárgott a Pixel 10a specifikációja
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
válasz
csabyka666
#14955
üzenetére
$sql = "SELECT * FROM tabla WHERE id=$value"; //ez így persze nem fut le, de a lényeget értitek...
hogyan lehetséges az, hogy a mai napig látni összefűzött query-ket (NAGY HIBA!!), amik a potenciális veszélyforrásokat szépen magukba foglalják? Úgy értem, régen sokkal inkább tele volt a net akkora szar tutorialokkal, amikből az ember kezdőként sem győzött kukázni, szelektálni, hogy na most melyikben bízzak - de ma már van Google által nagyon jól indexelt Stack Overflow, ahol szerencsére legtöbbször a fejére koppintanak annak, aki ilyen csúfságokat akar elkövetni, meg van számtalan tutorial, ahol elsők között hívják fel a figyelmet arra, hogy sose bízz a felhasználótól érkező vagy általa bármilyen módon módosítható inputban, amikor adatbázis-lekéréssel foglalkozol.
Nézz utána az SQL Injection fogalmának, aztán pedig a PDO-nak és a prepared statementeknek. Így nem kell tartanod SQL Injectiontől.
Normális esetben ez valahogy így nézne ki csatlakozás után:// csatlakozás
$db = new PDO(
'mysql:host=localhost;dbname=test_db', // test_db-t módosítsd a megfelelő adatbázisnévre
'root', // módosítsd
'1234', // módosítsd
array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8;', // egyből UTF-8-ra fogja állítani kapcsolódás után a karakterkódolást
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // kivételeket fog dobálni probléma esetén
)
);
$query = 'SELECT ez, az, amaz FROM tabla WHERE id=:id'; // inkább sorold fel a valóban szükséges mezőket, ne mindig a *-ot használd!!
$stmt = $db->prepare ( $query );
$stmt->bindValue( ":id", $value, PDO::PARAM_INT );
$stmt->execute();
foreach ($stmt as $row) {
echo 'ez: '.$row['ez'].', az: '.$row['az'].', amaz: '. $row['ez'];
}Itt láthatsz még bőven példát PDO használatára:
http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers#Executing_prepared_statements_in_a_loopItt bindParam()-ot használ:
$values = array('bob', 'alice', 'lisa', 'john');
$name = '';
$stmt = $db->prepare("INSERT INTO table(`name`) VALUES(:name)");
$stmt->bindParam(':name', $name, PDO::PARAM_STR);
foreach($values as $name) {
$stmt->execute();
}Itt egy példa tranzakciók használatára:
try {
$db->beginTransaction(); // note that calling beginTransaction() turns off auto commit automatically
$db->exec("SOME QUERY");
$stmt = $db->prepare("SOME OTHER QUERY?");
$stmt->execute(array($value));
$stmt = $db->prepare("YET ANOTHER QUERY??");
$stmt->execute(array($value2, $value3));
$db->commit();
} catch(PDOException $ex) {
//Something went wrong rollback!
$db->rollBack();
echo $ex->getMessage();
}
Új hozzászólás Aktív témák
- ELADÓ Keychron K8 Aluminium Frame vezetéknélküli billentyűzet Keychron fa csuklótámasszal (+ajándék)
- MSI Vector 16 Gaming Laptop / RTX 4080 175W / i9-12900HX / 1TB SSD / 16GB DDR5 RAM /
- iPhone 15 GYÁRI 99%-os akkumulátor!!
- LG 48" OLED (OLED48B53LA) 4K AI Smart TV
- Gamer PC-Számítógép! Csere-Beszámítás! Ultra 5 245KF / RTX 5060 / 16GB RGB DDR5 / 1TB Nvme SSD
- GYÖNYÖRŰ iPhone 11 64GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS4325, 100% Akkumulátor
- Új könyv: A szamuráj erényei Kicune - Itó könyve
- Gamer PC-Számítógép! Csere-Beszámítás! R5 3600 / RX 5700 8GB / 16GB DDR4 / 256SSD + 2TB HDD
- Lenovo ThinkPad T14 Gen2 Intel i5-1135G7 Refurbished - Garancia
- iking.hu Apple iPhone 14 128GB Midnight használt 100% akku 6 hónap garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


