سؤال

يا كل ذلك، مجرد سؤال سريع (يجب أن يكون الإصلاح السهل الذي أعتقد أنه). في أي بيان في استعلام، هل هناك طريقة للحصول على أعمدة متعددة موجودة في الداخل؟ هنا هو رمزي:

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass'";

ما أريد القيام به هو إضافة عمود آخر بعد مكان (يسمى Priv_Level = '$ privlevel'). لم أكن متأكدا من بناء الجملة حول كيفية القيام بذلك.

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

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

المحلول

قراءة ما يصل إلى SQL. ولكن على أي حال، للقيام بذلك فقط إضافة AND priv_level = '$privlevel' إلى نهاية SQL.

قد تكون هذه خطوة كبيرة جدا إذا كنت جديدا على PHP، لكنني أعتقد أنه يجب عليك قراءة mysqli فئة في PHP. جدا. يسمح بتنفيذ أكثر أمانا للاستعلامات.

خلاف ذلك، إليك طريقة أكثر أمانا:

$sql = "SELECT * FROM $tbl_name WHERE " .
       "username = '" . mysql_real_escape_string($myusername) . "' AND " .
       "pwd = '" . mysql_real_escape_string($pass) . "' AND " .
       "priv_level = '" . mysql_real_escape_string($privlevel) . "'";

نصائح أخرى

ملفوفة للضواحي:

$sql="
  SELECT * 
  FROM $tbl_name 
  WHERE username='$myusername' and pwd='$pass' and priv_level = '$privlevel'
";

شخص آخر سوف يحذرك عن مدى خطورة البيان. :-) فكر في حقن SQL.

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level = '$privlevel'";

إذا كنت تفضل عدم استخدام "، فجرب هذا:

$sql='SELECT * FROM '.$tbl_name.' WHERE username=\''.$myusername.'\' and pwd=\''.$pass.'\' and priv_level=\''.$privlevel.'\'';
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' AND priv_level = '$privlevel'";

على الجانب ملاحظة: ما يبدو أن تفعله هنا أمر سيء للغاية.

أعتقد أنك بحاجة إلى إضافته (قد يكون مع و) إلى الفقرة حيث:

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level = '$privlevel'";

UHM، استفسارك يستخدم بالفعل أعمدة متعددة في جملة أين :)

قضايا حقن SQL جانبا (كن حذرا):

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level='$privlevel'";

ال WHERE البند يمكن AND أي عدد من الشيكات، بحيث يمكنك بسهولة ثلاثة حيث لا تملك اثنين، إضافة فقط and priv_level='$priv_level' في النهاية.

تحرير: كما ذكر إجابة @ Thorarin، فهذه طريقة محفوفة بالمخاطر لبناء استفسارات SQL، وستكون ملزمة المعلمة أكثر أمانا - ولكن هذا متعامدا لاستخدام اثنين مقابل ثلاثة أعمدة في WHERE بند.

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