سؤال

قل إنني أرغب في إدراجها في الاسم والعنوان والمدينة والولاية والقيم البريدي $ اسم $ العنوان $ etc .....

كيف يمكنني تشغيل mysql_real_escape_string على كل من المتغيرات قبل إدراج. يجب أن يكون هناك حلقة أو حلقة أو أثناء كتابة كل متغير أليس كذلك؟

شكرا للمساعدة.

توم

لذلك إذا كان لدي

 $data = array($address, $city, $name);
 array_map('mysql_real_escape_string', $data);

و

$columns = "name, address, city, state, zip";
$count = $dbh->exec("INSERT INTO customer($columns) VALUES ($data)");

أحصل على الكثير من الأخطاء.

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'root'@'localhost' (using password: NO) in /Users/tommyscott45/Sites/experiment/result.php on line 23

ماذا الآن؟

هل كانت مفيدة؟

المحلول

حدث خطأ في قاعدة البيانات عند محاولة الاحتجاج mysql_real_escape_string وأرى أنك تستخدم $dbh->exec() لتنفيذ الاستعلام. هذا يقترح أنك تتصل بقاعدة البيانات باستخدام PDO، لذلك يجب عليك استخدامها PDO::quote بدلا من mysql_real_escape_string.

علاوة على ذلك، كما ذكر آخرون بالفعل، سيكون هناك طريقة أفضل لحل مشكلتك هي استخدام البيانات المعدة و PDO::prepare.

نصائح أخرى

كنت تستخدم sprinthf.

علي سبيل المثال

$query = sprintf("INSERT into 
                  TABLE name = '%s', address = '%s', city = '%s'",
                 mysqli_escape_string($link, $name), 
                 mysqli_escape_string($link, $address), 
                 mysqli_escape_string($link, $city) );

أو هو أنه ليس بالضبط ما كنت تبحث عنه؛ طريقة لتجنب كتابة "mysqli_escape_string" مرارا وتكرارا.

هذا يجب أن يعمل.

$data = array($address, $city, $name);
array_map('mysql_real_escape_string', $data);

ولكن عليك حقا عدم استخدام ملحق MySQL بعد الآن. القي نظرة على نفايات أو mysqli. ودعمهم ل "البيانات المعدة".

لديك العديد من المشاكل.

أولا هو أنك تحتاج إلى تعيين إخراج array_map() إلى متغير لأنه لا يقوم بالتحويل في المكان. ثم تحتاج إلى تنفذه مرة أخرى إلى سلسلة.

 $data = "'".implode("', '", array_map('mysql_real_escape_string', $data))."'";

المشكلة الأكبر هي أنك تقوم بتجميع تدميم SQL بدلا من استخدام طبقة وصول إلى البيانات والتي ستأخذ المعلومات التي تريد حفظها واستخدام معرفتها حول المكان الذي تريد تخزينه لتجميع عبارة SQL الصحيحة، مع نقلا عن نقلا عن ذلك وكل.

هذا هو أيضا الدافع وراء الاقتراحات لاستخدام البيانات المعدة، بالمناسبة، ولكن فقط استخدام البيانات المعدة هو نصف الحل فقط لأنك ستظل تجميع بيانات SQL.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top