- Samsung Galaxy S23 Ultra - non plus ultra
- Apple iPhone 17 Pro Max – fennsík
- Xiaomi 14T Pro - teljes a család?
- Kijelző került a kamerasávra a Xiaomi 17 Pro és 17 Pro Max hátulján
- Minták árulkodnak a Galaxy Trifold három akkumulátoráról
- Akciófigyelő
- Fotók, videók mobillal
- iPhone topik
- A OnePlust akarja beelőzni a Realme
- Google Pixel topik
Hirdetés
(használd a CYBSEC25PH kuponkódot további 20 ezer ft kedvezményért!)
Ú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
- IPhone 12 64GB szép gyári független akku gyári 100%
- 100%hibátlan iPhone 15 Pro 128GB white titan több mint 1 év Apple jótállás
- Precision 3581 15.6" FHD IPS i7-13800H RTX A500 32GB 512GB NVMe ujjlolv gar
- SIEMENS TQ513R01 Teljesen automata kávéfőző EQ500 Integral/Fekete Kivehető víztartály 15 bar
- LG OLED Evo G3, 65,''col, 4K
- HIBÁTLAN iPhone 13 Pro 256GB Silver -1 ÉV GARANCIA - Kártyafüggetlen, MS3382, 95% Akkumulátor
- Samsung Galaxy Tab A8 32GB, Újszerű, 1 Év Garanciával
- HIBÁTLAN iPhone 13 Pro Max 128GB Graphite -1 ÉV GARANCIA - Kártyafüggetlen, MS3390, 93% Akkumulátor
- RÉSZLETRE .OPCIONÁLIS. Acer Nitro V ANV15-51-554Z SZÁMLA , GARANCIA
- GYÖNYÖRŰ iPhone 13 mini 256GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3407
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest