2013-04-25 9 views
5

obecnie używam kod przestarzałej aby uzyskać dane od użytkowników, co następuje:Jak dokonać aktualizacji z mysql_ * do mysqli_ *?

/* retrieve */ 
$lastName = $_POST['lastName']; 
$firstName = $_POST['firstName']; 
$examLevel=$_POST['level']; 

/* connect */ 
$dbc=mysql_connect("localhost", "user", "passw") or die('Error connecting to MySQL server'); 
mysql_select_db("db") or die('Error selecting database.'); 

/* sanitize */ 
$lastName=mysql_real_escape_string($lastName); 
$firstName=mysql_real_escape_string($firstName); 
$examLevel=mysql_real_escape_string($examLevel); 


/* insert */ 
$query_personal = "INSERT INTO personal (LastName, FirstName) VALUES ('$lastName', '$firstName')"; 

$query_exam = "INSERT INTO exam (Level, Centre, BackupCentre, etc.) VALUES ('$examLevel', '$centre', '$backup', 'etc')"; 

To działa, ale Ciągle napotykając ostrzeżeń dotyczących bezpieczeństwa i braku wsparcia. Jest małe przepisanie na połączyć z mysqli zamiast mysql, ale co z mysqli_real_escape_string? Widziałem to używane w przykładach, ale widziałem również porady, aby użyć gotowych instrukcji, które nie używają mysqli_real_escape_string.

A jak wykorzystam przygotowane instrukcje do WSTAWIĆ moje dane? Jak na razie trochę jestem na morzu. Na przykład, czy powiązanie parametrów dotyczy tylko INSERT i wiązania wyników tylko dla SELECT?

+0

Niestety, nie mógł uzyskać kod formatowania prawo . – Benjamin

+0

Co jest takiego trudnego w oznaczaniu całego kodu i kliknięciu '{}'? – Barmar

+0

Zastanawiam się, czy jest to rekord za bycie tutaj protekcjonalnym? 2 minuty 35 sekund. Spróbuję to zrozumieć! – Benjamin

Odpowiedz

0

przekonwertować go do PDO

/* connect */ 
$dsn = "mysql:host=localhost;db=test;charset=utf8"; 
$opt = array(
    PDO::ATTR_ERRMODE   => PDO::ERRMODE_EXCEPTION, 
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC 
); 
$pdo = new PDO($dsn,"user", "passw", $opt); 


/* insert */ 
$query = "INSERT INTO personal (LastName, FirstName) VALUES (?, ?)"; 
$stmt = $pdo->prepare($query); 
$stmt->execute(array($_POST['lastName'],$_POST['firstName'])); 

$query = "INSERT INTO exam (Level, Centre, BackupCentre, etc) VALUES (?, ?, ?, 'etc')"; 
$stmt = $pdo->prepare($query); 
$stmt->execute(array($_POST['level'], $centre, $backup)); 
+0

Dziękuję, YCS! Teraz, gdy zamieniam się w ChNP, starannie przestudiuję twoją odpowiedź. – Benjamin

0

zobaczyć ten stron do konwersji mysql do mysqli

Converting_to_MySQLi

https://wikis.oracle.com/display/mysql/Converting+to+MySQLi

i zobaczyć mysqli_real_escape_string podręcznika, który zawiera informacje na temat mysqli_real_escape_string i problem bezpieczeństwa i jak go rozwiązać.

php.net:

Bezpieczeństwo: domyślny zestaw znaków

Zestaw znaków musi być ustawiona zarówno na poziomie serwera lub za pomocą funkcji API mysqli_set_charset() dla niego wpływać mysqli_real_escape_string(). Aby uzyskać więcej informacji, zobacz sekcję poświęconą pojęciom na temat character sets.

zobaczyć tę stronę dla zapytania dla insert data

zobaczyć aktualizacja prepare data for inserting to mysql

i http://php.net/manual/de/mysqli.quickstart.prepared-statements.php

Powiązane problemy