PDA

View Full Version : تفاوت mysql_real_escape_string با mysq_query ?



king-net
چهارشنبه 17 فروردین 1390, 22:07 عصر
درود!
فرق اين دو دستور چيه؟

امیـرحسین
چهارشنبه 17 فروردین 1390, 22:32 عصر
تابع mysql_real_escape_string کوتیشن و دابل‌کوتیشن‌های یک متن رو escape میکنه تا خطر SQL Injection از بین بره.
تابعی به نام mysq_query نداریم. ااگه منظورتون mysql_query بوده که این تابع کوئری رو اجرا میکنه. این دو تابع هیچ ربطی به هم ندارند که پرسیدید تفاوتشون چیه...

eshpilen
چهارشنبه 17 فروردین 1390, 22:41 عصر
تابع mysql_real_escape_string کوتیشن و دابل‌کوتیشن‌های یک متن رو escape میکنه تا خطر SQL Injection از بین بره.
بجز کوتیشن ها چند کاراکتر دیگر هم هستن البته (فکر کنم خود بک اسلش و کاراکتر نال). البته بعضی از این کاراکترها ممکنه برای SQL Injection نتونن بکار برن، اما Escape نشدن اونا مشکلات فنی و اختلال در کوئری ایجاد میکنه.

king-net
پنج شنبه 18 فروردین 1390, 11:15 صبح
يعني ميشه به mysql_real_escape_string يك كوئري داد مثلا SELECT * FROM post
?

mtchabok
پنج شنبه 18 فروردین 1390, 11:43 صبح
نه عزیز
تابع mysql_real_escape_string فقط کوئری مربوطه رو آماده برای ارسال میکنه و خودش به mysql نمی فرسته . و با توسط mysql_query کوئریتونو بفرستید .

king-net
پنج شنبه 18 فروردین 1390, 11:47 صبح
sاگه ميشه با يك مثال توضيح بديد تفاوتشون رو :گیج:

mtchabok
پنج شنبه 18 فروردین 1390, 12:02 عصر
ببینید عزیزم
اول یه نگاهی به این بندازین : http://ir2.php.net/manual/en/function.mysql-real-escape-string.php

<?php
// $link = connection to mysql
// $query = query for send to mysql

// برای رفع مشکلات امنیتی کوئری رو به این تابع میدیم
$query = mysql_real_escape_string($query,$link);

// برای ارسال کوئری به mysql از این تابع استفاده میشود
$result = mysql_query($query,$link);

?>