Привет, я новичок в PDO, поэтому запутался и получил ошибки;) с mysql_real_escape_string ..
может кто-нибудь помочь, вот мой код
if(!empty($_POST) && isset($_POST)) { include ('connection_pdo.php'); $dbh = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); $source_url= mysql_real_escape_string($_POST['source_url']); $class = mysql_real_escape_string($_POST['class']); $year = mysql_real_escape_string($_POST['year']); $date = time(); $ip = $_SERVER['REMOTE_ADDR']; $insert = $dbh->prepare(" INSERT IGNORE INTO school_students_images ( folder_name, image_url, source_url, class, year , date , ip ) VALUES (:folder_name, :image_url, :source_url, :class, :year, :date, :ip) "); $a=0; while ($a<1000){ $a++; $insert->execute(array( 'folder_name'=> $name->content, //** geting from other source 'image_url' => $link[$a], //** geting from other source 'source_url' => $source_url, 'class' => $class , 'year' => $year , 'date' => $date, 'ip' => $ip )); }
он не работает, получая ошибку, но если я использую его без вывода
$source_url= ($_POST['source_url']); $class = ($_POST['class']); $year = ($_POST['year']); $date = time(); $ip = $_SERVER['REMOTE_ADDR'];
он работает … так что я запутался, безопасно ли POST без mysql_real_escape_string в базу данных? (PDO дает любую защиту по умолчанию?), или я делаю некоторые ошибки в этом … пожалуйста, помогите
Да, PDO автоматически ускользает от ваших данных, поэтому вам не нужно использовать mysql_real_escape_string
. См. Здесь , например.
mysql_real_escape_string
требует активного соединения mysql
выполненного с помощью вызова mysql_connect
ранее … Так что да, это не сработает.
PDO делает это автоматически для вас в любом случае
С подготовленными заявлениями вам не нужно избегать переменных. Драйвер сделает это автоматически, в зависимости от базы данных, которую вы используете под ней. На самом деле вы не должны убегать от него сами, так как это удвоит его.