PDA

View Full Version : مبتدی: اشکال درتابع mysql_fetch_array()



smemamian
جمعه 03 خرداد 1392, 18:04 عصر
سلام من یک دیتابیس دارم به نام test , و نام جدول admin که دارای 2 ستون User و Pass هست !

ولی نمی دونم چرا هنگام اجرا این خطا رو میده :

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /opt/lampp/htdocs/Login/validate_login.php on line 17
Sorry, your credentials are not valid, Please try again.

اینم کد :


<?php

$email = $_POST["login"];
$pass = $_POST["password"];

$con = mysql_connect("localhost","root","mypass");

if(! $con)
{
die('Connection Failed'.mysql_error());
}

mysql_select_db("test",$con);

$result = mysql_query("SELECT User, Pass FROM admin WHERE User = $email");

$row = mysql_fetch_array($result);

if($row["User"]==$email && $row["Pass"]==$pass)
echo"You are a validated user.";
else
echo"Sorry, your credentials are not valid, Please try again.";
?>

engmmrj
جمعه 03 خرداد 1392, 18:22 عصر
مشکل از query تون است $email باید داخل ('$email') باشد .

smemamian
جمعه 03 خرداد 1392, 18:27 عصر
خیلی لطف کردین .

sh.n.n786
شنبه 04 خرداد 1392, 08:46 صبح
درود من این کوئری رو این طوری هم نوشتم :


<?php

$email = mysql_real_escape_string($_POST["login"]);
$pass = mysql_real_escape_string($_POST["password"]);

$con = mysql_connect("localhost","root","" ) or die('Connection Failed'.mysql_error());
mysql_select_db("test",$con);
$result = mysql_query("SELECT `User` , `Pass` FROM `admin` WHERE `User` = {$email} and `Pass` = {$pass}");
$row = mysql_fetch_array($result);
if(!empty($row))
echo"You are a validated user.";
else
echo"Sorry, your credentials are not valid, Please try again.";
?>

درضمن باگ SqlInjection داشت که با تابع mysql_real_escape_string رفع شد
موفق باشید

MMSHFE
شنبه 04 خرداد 1392, 09:18 صبح
ضمناً برای مصرف بهینه حافظه بهتره بجای mysql_fetch_array از mysql_fetch_assoc استفاده کنید.

H:Shojaei
شنبه 04 خرداد 1392, 12:02 عصر
ضمناً برای مصرف بهینه حافظه بهتره بجای mysql_fetch_array از mysql_fetch_assoc استفاده کنید.

سلام ببخشيد ميشه درباره ي ايني كه گفتيد بيشتر توضيح بديد هميشه برام سوال بود تفاوت اين دوتا چيه.
با تشكر فراوان.