PDA

View Full Version : مشکلی اعصاب خورد کن در pdo



esy2012
شنبه 28 تیر 1393, 18:41 عصر
با سلام و عرض خسته نباشید محضر اساتید محترم


بخشید من یه مشکلی دارم در بخش pdo که زمین و زمان رو به هم زدم نتونستم جوابش رو پیدا کنم ممنون میشم راهنماییم کنید :افسرده:

بنده در یک فایل این کد هارو اضافه کردم و در فرم لاگین این کد هارو اینکلود کردم (تست هم کردم که کانک شده یا نه کانکت میشه)
<?php


$servername="localhost";
$dbname="PDO";
$username="root";
$password="";
$dsn="mysql:host=$servername;dbname=$dbname";
try{
$connect=new PDO($dsn,$username,$password);
return $connect;
}
catch(PDOException $error)
{
echo "Error in connect";
exit();
}

?>



بعد در فرم لاگین این دستوراات رو زدم

<?php
include "./object/main.php";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>login</title>
</head>


<body>
<?php
$sql="SELECT COUNT(*) FROM `tbl_user` WHERE `user` = ? AND `pass` = ? ";
$result = $connect-> prepare($sql);
$result -> bindValue(1,$_post['UserName']);
$result -> bindValue(2,$_post['Password']);
$result->execute();
$num=$result->fetchColumn();
if($num==1)
{
echo "وصل شد";
}

?>
<form id="form1" name="form1" method="post" action="">
<p>
<label for="cs">UserName</label>
<input type="text" name="UserName" id="UserName" />
</p>
<p>
<label for="cs2">Password</label>
<input type="text" name="Password" id="Password" />
</p>
<p>
<input name="login" type="submit" id="login" value="login" />
</p>
</form>
<p>&nbsp;</p>
<p>&nbsp;</p>
</body>
</html>


الان مشکل من اینجاست که توی هر آموزشی که دیدم وقتی در قسمت $connect-> prepare کد رو که مینویسن خود دریمویور prepare رو میاره ولی در سیستم من بجز pg_prepare چیز دیگه ای نمیاره و همچنین bindValue رو اصلا نمیشناسه و خواستم از parametr استفاده کنم اونم نشناخت فقط اینو آورد در لیستش pg_parameter_status

به نظر شما مشکل در کجاست ؟ :گریه::عصبانی++::عصبانی::عصبا ی++:

MRmoon
شنبه 28 تیر 1393, 18:59 عصر
با سلام و عرض خسته نباشید محضر اساتید محترم


بخشید من یه مشکلی دارم در بخش pdo که زمین و زمان رو به هم زدم نتونستم جوابش رو پیدا کنم ممنون میشم راهنماییم کنید :افسرده:

بنده در یک فایل این کد هارو اضافه کردم و در فرم لاگین این کد هارو اینکلود کردم (تست هم کردم که کانک شده یا نه کانکت میشه)
<?php


$servername="localhost";
$dbname="PDO";
$username="root";
$password="";
$dsn="mysql:host=$servername;dbname=$dbname";
try{
$connect=new PDO($dsn,$username,$password);
return $connect;
}
catch(PDOException $error)
{
echo "Error in connect";
exit();
}

?>



بعد در فرم لاگین این دستوراات رو زدم

<?php
include "./object/main.php";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>login</title>
</head>


<body>
<?php
$sql="SELECT COUNT(*) FROM `tbl_user` WHERE `user` = ? AND `pass` = ? ";
$result = $connect-> prepare($sql);
$result -> bindValue(1,$_post['UserName']);
$result -> bindValue(2,$_post['Password']);
$result->execute();
$num=$result->fetchColumn();
if($num==1)
{
echo "وصل شد";
}

?>
<form id="form1" name="form1" method="post" action="">
<p>
<label for="cs">UserName</label>
<input type="text" name="UserName" id="UserName" />
</p>
<p>
<label for="cs2">Password</label>
<input type="text" name="Password" id="Password" />
</p>
<p>
<input name="login" type="submit" id="login" value="login" />
</p>
</form>
<p>&nbsp;</p>
<p>&nbsp;</p>
</body>
</html>


الان مشکل من اینجاست که توی هر آموزشی که دیدم وقتی در قسمت $connect-> prepare کد رو که مینویسن خود دریمویور prepare رو میاره ولی در سیستم من بجز pg_prepare چیز دیگه ای نمیاره و همچنین bindValue رو اصلا نمیشناسه و خواستم از parametr استفاده کنم اونم نشناخت فقط اینو آورد در لیستش pg_parameter_status

به نظر شما مشکل در کجاست ؟ :گریه::عصبانی++::عصبانی::عصبا ی++:

درود.

آیا شما اروری دریافت می کنید؟؟

اگر دریافت می کنید اون رو بذارید.

محمد.

esy2012
شنبه 28 تیر 1393, 19:13 عصر
یه اروری که میده این هست

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\pdo\login.php on line 17

که مربوط به این کده $result->execute();

مهرداد سیف زاده
شنبه 28 تیر 1393, 19:36 عصر
کد زیر رو اجرا بگیرید


$username = isset($_POST['UserName'])?$_POST['username']:null;
$password = isset($_POST['Password'])?$_POST['Password']:null;


if ($username != null && $password != null) {
$sql = "SELECT COUNT(*) FROM `tbl_user` WHERE `user` = ? AND `pass` = ? ";
$result = $connect->prepare($sql);
$result->execute(array($username, $password));
$num = $result->fetchColumn();
if ($num == 1) {
echo "وصل شد";
}
}

esy2012
شنبه 28 تیر 1393, 19:41 عصر
کد زیر رو اجرا بگیرید


$username = isset($_POST['UserName'])?$_POST['username']:null;
$password = isset($_POST['Password'])?$_POST['Password']:null;


if ($username != null && $password != null) {
$sql = "SELECT COUNT(*) FROM `tbl_user` WHERE `user` = ? AND `pass` = ? ";
$result = $connect->prepare($sql);
$result->execute(array($username, $password));
$num = $result->fetchColumn();
if ($num == 1) {
echo "وصل شد";
}
}



دوست عزیز واقعا نمیدونم چجوری ازتون تشکر کنم ، خدا عاقبت بخیرتون کنه :لبخند:

esy2012
شنبه 28 تیر 1393, 19:53 عصر
ببخشید من چرا نمیتونم با $_post ارتباط برقرار کنم مثلا این کد

if(isset($_post['login']))

وقتی این دستور رو به اول دستورات بالا اضافه می کنم کلا کدها اجرا نمیشه :ناراحت:

<?php
if(isset($_post['login']))
{
$username = isset($_POST['username'])?$_POST['username']:null;
$password = isset($_POST['password'])?$_POST['password']:null;
if(empty($username)||empty($password))
{
echo "کادر متن خالی می باشد";
}
$sql="SELECT COUNT(*) FROM `tbl_user` WHERE `user` = :username AND `pass` = :password ";
$result = $connect-> prepare($sql);
$result->execute(array(":username"=>$username,":password"=>$password));
$num=$result->fetchColumn();
if($num==1)
{
echo "وصل شد";
}
}
?>

مهرداد سیف زاده
شنبه 28 تیر 1393, 20:01 عصر
باید حروف بزرگ باشه. چون POST و GET جزو متغیرهای از قبل تعریف شده هست predefined variable (http://php.net/manual/en/reserved.variables.php) . وقتی شما $_POST مینویسید php آماده هست برای گرفتن مقدار post که برای این صفحه اومده ولی وقتی $_post مینویسید اون رو یک متغیر عادی تعریف شده توسط کاربر میدونه و کار خاصی روش انجام نمیده. متغیرهای از قبل تعریف شده رو یه دور مطالعه کنید
http://php.net/manual/en/reserved.variables.php



ببخشید من چرا نمیتونم با $_post ارتباط برقرار کنم مثلا این کد

if(isset($_post['login']))

وقتی این دستور رو به اول دستورات بالا اضافه می کنم کلا کدها اجرا نمیشه :ناراحت:

esy2012
شنبه 28 تیر 1393, 20:08 عصر
خیلی ممنونم

اخه من سی شارپ کار می کردم الان اومدم سمت برنامه نویسی اوپن سورس برا همین همه چیزم به هم ریخته :لبخند:

MRmoon
یک شنبه 29 تیر 1393, 12:05 عصر
خیلی ممنونم

اخه من سی شارپ کار می کردم الان اومدم سمت برنامه نویسی اوپن سورس برا همین همه چیزم به هم ریخته :لبخند:
درود

ببخشید ولی فکر نکنم ربطی به اوپن سورس داشته باشه :چشمک:.

این مربوط به syntax زبان php هست. هر زبانی یه syntax داره. که حالا php رو بزرگ کوچیکی حروف حساس هست.

یه جایی خوندم بازو نوشته بود من با اوپن سورس بخوام یه چیزی درست کنم باید 50 تا کار انجام بدم اما با ابزار مایکروسافت تو 1 دقیقه!!!واقعا به سطح دانششون میبالیدم که چقدر اطلاعات دارن:متعجب:

محمد.