• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
اتصال به پایگاه داده توسط pdo
#1
سلام دوستان . اول از همه بگم که من اصلا از php هیچی نمیدونم ولی الان برای اتصال اندروید به سرور باید از php استفاده کنم. من این کد رو نوشتم:
کد پی‌اچ‌پی:
<?php
$dsn 
'mysql:host=hostname;dbname=dbname;charset=utf8''user''pass';


try {
    
$dbh = new PDO($dsn$user$pass);
} catch (
PDOException $e) {
    echo 
'Connection failed: ' $e->getMessage();
}


$username=$_POST['username'];
$password=$_POST['password']; 


$sqlQ="SELECT * FROM log_in WHERE username='$username'";
$result mysql_Query($sqlQ);
$row mysql_fetch_array($result);

if(
$row[1] == ""){
    print 
"no user";
}
else if(
$password != $row[2]){
    print 
"wrong pass";
}
else {
    print 
"ok";
}

mysql_close($con);

?>
داخل هاستم هم دیتا بیس رو ساهتم و مقداردهی کردم. بعد از اینکه اجراش میکنم هیچ پیغامی بهم نمیده و صفحه سفید میاد. کسی میتونه کمکم کنه که مشکل از کجاست؟
  پاسخ
تشکر شده توسط :
#2
سلام،
این ۳ خط کد رو بزار اول اسکریپت، ببین چه اروری میگیری، احتمالا به این خاطر هست که درایور PDO رو نصب نکرده باشی.

کد پی‌اچ‌پی:
ini_set('display_errors'1);
ini_set('display_startup_errors'1);
error_reporting(E_ALL); 
غایب
  پاسخ
تشکر شده توسط : appalborz
#3
اینجاش PDO هست قبول
کد پی‌اچ‌پی:
try {
    
$dbh = new PDO($dsn$user$pass);
} catch (
PDOException $e) {
    echo 
'Connection failed: ' $e->getMessage();


اینجاش PDO نیست
کد پی‌اچ‌پی:
$sqlQ="SELECT * FROM log_in WHERE username='$username'";
$result mysql_Query($sqlQ);
$row mysql_fetch_array($result); 

http://www.afterhoursprogramming.com/tutorial/PHP/PDO/

اینجا هم روش اتصال بصورت mysqli رو توضیح داده
https://www.w3schools.com/php/php_mysql_connect.asp
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط : appalborz
#4
(۱۳۹۶ شهریور ۰۱, ۱۲:۲۴ ب.ظ)appalborz نوشته: سلام دوستان . اول از همه بگم که من اصلا از php هیچی نمیدونم ولی الان برای اتصال اندروید به سرور باید از php استفاده کنم. من این کد رو نوشتم:
کد پی‌اچ‌پی:
<?php
$dsn 
'mysql:host=hostname;dbname=dbname;charset=utf8''user''pass';


try {
    
$dbh = new PDO($dsn$user$pass);
} catch (
PDOException $e) {
    echo 
'Connection failed: ' $e->getMessage();
}


$username=$_POST['username'];
$password=$_POST['password']; 


$sqlQ="SELECT * FROM log_in WHERE username='$username'";
$result mysql_Query($sqlQ);
$row mysql_fetch_array($result);

if(
$row[1] == ""){
    print 
"no user";
}
else if(
$password != $row[2]){
    print 
"wrong pass";
}
else {
    print 
"ok";
}

mysql_close($con);

?>
داخل هاستم هم دیتا بیس رو ساهتم و مقداردهی کردم. بعد از اینکه اجراش میکنم هیچ پیغامی بهم نمیده و صفحه سفید میاد. کسی میتونه کمکم کنه که مشکل از کجاست؟

پیشنهاد میکنم چون میگین از php هیچی نمیدونید بجای PDO از MySQLI استفاده کنید خیلی راحت تره کار با PDO یکم سخت و پیچیدست این دو هم زیاد تفاوتی باهم ندارن
همونطورم که این دستمون اشاره کردن کد شما کلا ایراد داره یجای PDO یجاش mysql
  پاسخ
تشکر شده توسط : appalborz
#5
(۱۳۹۶ شهریور ۰۱, ۰۳:۰۳ ب.ظ)Alaa نوشته: سلام،
این ۳ خط کد رو بزار اول اسکریپت، ببین چه اروری میگیری، احتمالا به این خاطر هست که درایور PDO رو نصب نکرده باشی.

کد پی‌اچ‌پی:
ini_set('display_errors'1);
ini_set('display_startup_errors'1);
error_reporting(E_ALL); 

سلام. ممنونم از راهمنماییون. این 3 خط رو هم اضافه کردم ولی باز م صفحه سفید میاد. هیچ خطایی رو نشون نمیده.
  پاسخ
تشکر شده توسط :
#6
سلام از کد زیر استفاده کنید

کد پی‌اچ‌پی:
<?php
try {
    
$stmt = new PDO("mysql:host=localhost;dbname=cms""root""");
    
$stmt->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
    
$stmt->setAttribute(PDO::ATTR_EMULATE_PREPARESfalse);
    
// $stmt->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND_, "SET NAMES 'UTF8'");
    
$stmt->exec("SET NAMES 'UTF8'");
} catch (
Exception $e) {
    echo 
$e->getMessage();
}
if (isset(
$_POST['user']) && isset($_POST['pass'])) {
    
$result $stmt->prepare("SELECT * FROM `users` WHERE `username`=:username AND `password`=:password  LIMIT 1");
    
$result->bindValue(':username'$_POST['user'], PDO::PARAM_STR);
    
$result->bindValue(':password'md5(strtolower($_POST['user'])), PDO::PARAM_STR);
    
$result->execute();
    
$row_count $result->rowCount();
    if (
$row_count 0) {
        
$row $result->fetch(PDO::FETCH_ASSOC);
        echo 
'<pre>' print_r($rowtrue) . '</pre>' PHP_EOL;
    } else {
        echo 
'username not found';
    }
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<title>database</title>
</head>
<body>
    <form action="" method="post">
        <label>UserName : </label><input type="text" name="user"><br>
        <br> <label>Password : </label><input type="password" name="pass"><br>
        <br> <input type="submit" name="Send" value="send">
    </form>
</body>
</html> 

تشکر یادتون نره
آنکس که در هر جا دوستانی دارد ، همه جا را دوست داشتنی می یابد .
همیشه دزدی وجود دارد که دزد دیگر را غارت کند .
غایب
  پاسخ
تشکر شده توسط : appalborz
#7
(۱۳۹۶ شهریور ۰۲, ۱۲:۰۹ ب.ظ)nimaakbari نوشته: سلام از کد زیر استفاده کنید

کد پی‌اچ‌پی:
<?php
echo md5('admin');
try {
    
$stmt = new PDO("mysql:host=localhost;dbname=cms""root""");
    
$stmt->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
    
$stmt->setAttribute(PDO::ATTR_EMULATE_PREPARESfalse);
    
// $stmt->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND_, "SET NAMES 'UTF8'");
    
$stmt->exec("SET NAMES 'UTF8'");
} catch (
Exception $e) {
    echo 
$e->getMessage();
}
if (isset(
$_POST['user']) && isset($_POST['pass'])) {
    
$result $stmt->prepare("SELECT * FROM `users` WHERE `username`=:username AND `password`=:password  LIMIT 1");
    
$result->bindValue(':username'$_POST['user'], PDO::PARAM_STR);
    
$result->bindValue(':password'md5(strtolower($_POST['user'])), PDO::PARAM_STR);
    
$result->execute();
    
$row_count $result->rowCount();
    if (
$row_count 0) {
        
$row $result->fetch(PDO::FETCH_ASSOC);
        echo 
'<pre>' print_r($rowtrue) . '</pre>' PHP_EOL;
    } else {
        echo 
'username not found';
    }
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<title>database</title>
</head>
<body>
    <form action="" method="post">
        <label>UserName : </label><input type="text" name="user"><br>
        <br> <label>Password : </label><input type="password" name="pass"><br>
        <br> <input type="submit" name="Send" value="send">
    </form>
</body>
</html> 

تشکر یادتون نره

سلام. میشه لطفا روی این کدی که دادی بهم 1کم توضیح بدی که غیر از کپی کردن از کد شما 1 چیزی هم یاد بگیرم؟ ممنون. ضمن اینکه بعد از اینکه این کد رو استفاده کردم و اطلاعات هاست و user و pass رو جایگزین کردم این پیغام رو داد.
21232f297a57a5a743894a0e4a801fc3SQLSTATE[HY000] [2002] Connection refused
  پاسخ
تشکر شده توسط :
#8
سلام ابتدا کد زیر رو از اول صفحه حذف کنید.
کد پی‌اچ‌پی:
echo md5('admin'); 
سپس کد زیر رو به اول صفحه اضافه کنید بجای خط بالا
کد پی‌اچ‌پی:
ini_set('display_errors'1);
ini_set('display_startup_errors'1);
error_reporting(E_ALL); 
حالا به بانک اطلاعاتی خود مراجعه و یک بانک اطلاعاتی با هر نامی و یک جدول به نام users با سه فیلد id و username و password درست کنید.
علت خطا فکر کنم به دلیل عدم بانک اطلاعاتی شما بوده
آنکس که در هر جا دوستانی دارد ، همه جا را دوست داشتنی می یابد .
همیشه دزدی وجود دارد که دزد دیگر را غارت کند .
غایب
  پاسخ
تشکر شده توسط :
#9
(۱۳۹۶ شهریور ۰۲, ۰۳:۱۵ ب.ظ)nimaakbari نوشته: سلام ابتدا کد زیر رو از اول صفحه حذف کنید.
کد پی‌اچ‌پی:
echo md5('admin'); 
سپس کد زیر رو به اول صفحه اضافه کنید بجای خط بالا
کد پی‌اچ‌پی:
ini_set('display_errors'1);
ini_set('display_startup_errors'1);
error_reporting(E_ALL); 
حالا به بانک اطلاعاتی خود مراجعه و یک بانک اطلاعاتی با هر نامی و یک جدول به نام users با سه فیلد id و username و password درست کنید.
علت خطا فکر کنم به دلیل عدم بانک اطلاعاتی شما بوده

خیلی خیلی متشکرم که وقت گذاشتید برای جواب دادن به من. البته من همون ابتدای سوال گفته بودم که دیتا بیس رو ساختم داخل هاست. و باز هم با اضافه و کم کردن این کدهایی که گفتید بازم خطا میده.
SQLSTATE[HY000] [2002] Connection refused
  پاسخ
تشکر شده توسط :
#10
(۱۳۹۶ شهریور ۰۲, ۰۳:۴۴ ق.ظ)patrick نوشته:
(۱۳۹۶ شهریور ۰۱, ۱۲:۲۴ ب.ظ)appalborz نوشته: سلام دوستان . اول از همه بگم که من اصلا از php هیچی نمیدونم ولی الان برای اتصال اندروید به سرور باید از php استفاده کنم. من این کد رو نوشتم:
کد پی‌اچ‌پی:
<?php
$dsn 
'mysql:host=hostname;dbname=dbname;charset=utf8''user''pass';


try {
    
$dbh = new PDO($dsn$user$pass);
} catch (
PDOException $e) {
    echo 
'Connection failed: ' $e->getMessage();
}


$username=$_POST['username'];
$password=$_POST['password']; 


$sqlQ="SELECT * FROM log_in WHERE username='$username'";
$result mysql_Query($sqlQ);
$row mysql_fetch_array($result);

if(
$row[1] == ""){
    print 
"no user";
}
else if(
$password != $row[2]){
    print 
"wrong pass";
}
else {
    print 
"ok";
}

mysql_close($con);

?>
داخل هاستم هم دیتا بیس رو ساهتم و مقداردهی کردم. بعد از اینکه اجراش میکنم هیچ پیغامی بهم نمیده و صفحه سفید میاد. کسی میتونه کمکم کنه که مشکل از کجاست؟

پیشنهاد میکنم چون میگین از php هیچی نمیدونید بجای PDO از MySQLI استفاده کنید خیلی راحت تره کار با PDO یکم سخت و پیچیدست این دو هم زیاد تفاوتی باهم ندارن
همونطورم که این دستمون اشاره کردن کد شما کلا ایراد داره یجای PDO یجاش mysql

سلام. ممنون از راهنماییتون. دقیقا از خیر pdo گذشتم. با mysqli نوشتم. بالاخره به سرور متصل شد. ولی باز هم ایراداتی دارم که کم کم تلاش میکنم رفع بشه.
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان