PDA

View Full Version : اشکال در ارتباط با MySql



saeidkhphp
چهارشنبه 09 اردیبهشت 1394, 21:43 عصر
سلام دوستان ، بنده از یه شرکتی یه هاست و دامین خریدم ، و میخام اطلاعاتی مثه نام و فامیلی و سن رو مثلن بگیرم و بفرستم در دیتابیس سرور MySql ، قبل تر از خریدن بوسیله برنامه xampp کدهاش رو نوشتم و ایجاد شدن Table و اضافه شدن رکورد ها رو میدیدم در phpMyAdmin بر روی کامپیوتر خودم ، اما الان روی این سرور به مشکل برخوردم و همیشه ارور میده کدهام ایناس خواهش میکنم یه راهنمایی بکنید :


<!doctype html><html><head><meta charset="utf-8"><title>Untitled Document</title></head><form style="border-color:#EF171B" action="jjj.php" method="post"><input name="firstname" maxlength="255" /><input name="lastname" maxlength="255" /><input name="age" maxlength="255" /><input type="submit" value="register" /></form>

<body></body></html>


کد php :

<?php// etesal be bank
$con=mysqli_connect("localhost","fardafun_admin","12345") or die("couldn't connect to server");

// entekhabe database
$db=mysql_select_db("fardafun_newdb",$con) or die ("couldn't select to database");

// create table
$sql="create table newttt(FirstName CHAR(30),LastName CHAR(30),Age INT)";
if (mysqli_query($con,$sql))
{
echo "Table newtt created successfully";
}
else
{
echo "Error creating table: " . mysqli_error($con);
}

// vared kardane data be table afrad
mysqli_query($con,"INSERT INTO newttt (FirstName, LastName, Age)
VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')");

mysqli_close($con);
?>

اسم دیتابیسی که روی سرور ساختم همونتور که مشاهده میکنید fardafun_newdb و اسم یوزر رو هم fardafun_admin
ولی ارور میده وقتی submit فرم زده میشه و هیجی هم به phpMyAdmin در CPanel اضافه نمیشه !
منتظر راهنماییتون هستم ، ممنون

ikallam
چهارشنبه 09 اردیبهشت 1394, 22:14 عصر
سلام بجای کد های اتصال خودتون این کد ها رو بزارید

<?php
$servername="localhost";
$username="root";
$password="";
$db_name="sim";
$con= new mysqli($servername,$username,$password,$db_name);
mysqli_set_charset($con,'UTF8');
if($con->connect_error)
{
echo $con->connect_error;
}


?>

saeidkhphp
چهارشنبه 09 اردیبهشت 1394, 22:27 عصر
سلام بجای کد های اتصال خودتون این کد ها رو بزارید

<?php
$servername="localhost";
$username="root";
$password="";
$db_name="sim";
$con= new mysqli($servername,$username,$password,$db_name);
mysqli_set_charset($con,'UTF8');
if($con->connect_error)
{
echo $con->connect_error;
}


?>

ممنون ولی اینجوری باز خطا میده و یه سوال اینکه شما db_name رو sim تعریف کردید اما تو سرور در سی پنل یه جور دیگس مثلا fardafun_db اینجور باید باشه ، خطایی که از اجزای کد شما نشون داد این بود :

Warning: mysqli::mysqli() [mysqli.mysqli (http://fardafund.ir/mysqli.mysqli)]: (28000/1045): Access denied for user 'root'@'localhost' (using password: NO) in /home/fardafun/public_html/jjj.php on line 7

Warning: mysqli_set_charset() [function.mysqli-set-charset (http://fardafund.ir/function.mysqli-set-charset)]: Couldn't fetch mysqli in /home/fardafun/public_html/jjj.php on line 8
Access denied for user 'root'@'localhost' (using password: NO)
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /home/fardafun/public_html/jjj.php on line 19

Warning: mysqli_close() expects parameter 1 to be mysqli, null given in /home/fardafun/public_html/jjj.php on line 21

saeidkhphp
چهارشنبه 09 اردیبهشت 1394, 22:41 عصر
با کد خودم این خطا رو مینویسه دوستان :



Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.Please contact the server administrator, webmaster@fardafund.ir and inform them of the time the error occurred, and anything you might have done that may have caused the error.More information about this error may be available in the server error
log.Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.


البته همیشه این ارور رو نمیده این جدیدن ایجاد شده ارور صلیش برای عدم دسترسی به table هاست و مشابه اونا

yones_safari
چهارشنبه 09 اردیبهشت 1394, 23:11 عصر
سلام
من الان تست کردم رو سرورتون میگه فایل jjj.php وجود نداره!!!

mnakhaeipoor
چهارشنبه 09 اردیبهشت 1394, 23:20 عصر
سلام دوستان ، بنده از یه شرکتی یه هاست و دامین خریدم ، و میخام اطلاعاتی مثه نام و فامیلی و سن رو مثلن بگیرم و بفرستم در دیتابیس سرور MySql ، قبل تر از خریدن بوسیله برنامه xampp کدهاش رو نوشتم و ایجاد شدن Table و اضافه شدن رکورد ها رو میدیدم در phpMyAdmin بر روی کامپیوتر خودم ، اما الان روی این سرور به مشکل برخوردم و همیشه ارور میده کدهام ایناس خواهش میکنم یه راهنمایی بکنید :


<!doctype html><html><head><meta charset="utf-8"><title>Untitled Document</title></head><form style="border-color:#EF171B" action="jjj.php" method="post"><input name="firstname" maxlength="255" /><input name="lastname" maxlength="255" /><input name="age" maxlength="255" /><input type="submit" value="register" /></form>

<body></body></html>


کد php :

<?php// etesal be bank
$con=mysqli_connect("localhost","fardafun_admin","12345") or die("couldn't connect to server");

// entekhabe database
$db=mysql_select_db("fardafun_newdb",$con) or die ("couldn't select to database");

// create table
$sql="create table newttt(FirstName CHAR(30),LastName CHAR(30),Age INT)";
if (mysqli_query($con,$sql))
{
echo "Table newtt created successfully";
}
else
{
echo "Error creating table: " . mysqli_error($con);
}

// vared kardane data be table afrad
mysqli_query($con,"INSERT INTO newttt (FirstName, LastName, Age)
VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')");

mysqli_close($con);
?>

اسم دیتابیسی که روی سرور ساختم همونتور که مشاهده میکنید fardafun_newdb و اسم یوزر رو هم fardafun_admin
ولی ارور میده وقتی submit فرم زده میشه و هیجی هم به phpMyAdmin در CPanel اضافه نمیشه !
منتظر راهنماییتون هستم ، ممنون
استاد شما باید توی mysql_connect یوزر پسورد دیتابیسی که توی سی پنل ساختید رو قرار بدید
نه یوزر پسورد لوکال هاست
الان کد شما درست هست اما اشتباه کار اینجا هست که تو آرگومان اول mysql_connect به جای localhost باید آدرس دیتابیس MySql تون روی سی پنل رو وارد کنید :


<?php// etesal be bank$con=mysqli_connect("آدرس دیتابیس روی هاست","fardafun_admin"," 12345") or die("couldn't connect to server");
// entekhabe database $db=mysql_select_db("fardafun_newdb",$con) or die ("couldn't select to database"); // create table $sql="create table newttt(FirstName CHAR(30),LastName CHAR(30),Age INT)";if (mysqli_query($con,$sql)){ echo "Table newtt created successfully";}else{ echo "Error creating table: " . mysqli_error($con);} // vared kardane data be table afradmysqli_query($con,"INSERT INTO newttt (FirstName, LastName, Age)VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')"); mysqli_close($con); ?>


درضمن دیتابیسی که روی کامپیوتر خودتون داشتید رو بیخیالش بشید اینجا یا باید از دیتابیسی که توی کامپیوترتون هست export بگیرید و بعد توی دیتابیس هاستتون import کنیدش و یا از اول یه دیتابیس جدید با مشخصات دیتابیسی که روی کامپیوترتون بوده توی هاست ایجاد کنید تا خطا ها برطرف بشن
موفق باشید

saeidkhphp
چهارشنبه 09 اردیبهشت 1394, 23:26 عصر
سلام
من الان تست کردم رو سرورتون میگه فایل jjj.php وجود نداره!!!

بله حذفش کردم برای تصحیحش

saeidkhphp
چهارشنبه 09 اردیبهشت 1394, 23:32 عصر
اصلی ترین خطایی که میده اینه :

Warning: mysql_select_db() expects parameter 2 to be resource, object given in /home/fardafun/public_html/jjj.php on line 6
couldn't select to database


توی لاین 6 هم

$db=mysql_select_db("fardafun_newdb",$con) or die ("couldn't select to database");

من دیتابیس fardafun_newdb رو ساختم آخه نمیدونم چرا نمیتونه انتخابش کنه

راهنماییی کنید لدفن



همه ی i های آخر mysql رو برداشتم و یه کوچولو تغییر دادم خطاش این شد :


Warning: mysql_query() expects parameter 1 to be string, resource given in /home/fardafun/public_html/jjj.php on line 12

لاین 12 هم اینه : با لاین قبلیش میذارم کامل باشه :


mysql_query($con,"INSERT INTO newttt (FirstName, LastName, Age)
VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')");


بعد از همه ی اینا هنوز که وارد phpMyAdmin تو سی پنل میرم هنوز هیچ table ی ساخته نشده !‌:(

yones_safari
چهارشنبه 09 اردیبهشت 1394, 23:44 عصر
دلیل اینکه کاربران نمیتونن نخستین بار راهنماییتون کنن اینه که اطلاعات و خطاها رو نمینویسین
مشکل شما اینه که دو تا تابع *_ (http://php.net/manual/en/book.mysql.php)mysqli_* (http://php.net/manual/en/book.mysqli.php) , mysql (http://php.net/manual/en/book.mysql.php)دو تا تابع متفاوت هستند.
شما با تابع mysqli_connect کانکت میشین و با تابع mysql_select_db دیتابیستون رو انتخاب میکنید!!!!!
به جای خط زیر:

$db=mysql_select_db("fardafun_newdb",$con) or die ("couldn't select to database");
این خط رو بزارید:

$db=mysqli_select_db($con,"fardafun_newdb") or die ("couldn't select to database");

saeidkhphp
پنج شنبه 10 اردیبهشت 1394, 00:02 صبح
استاد شما باید توی mysql_connect یوزر پسورد دیتابیسی که توی سی پنل ساختید رو قرار بدید
نه یوزر پسورد لوکال هاست
الان کد شما درست هست اما اشتباه کار اینجا هست که تو آرگومان اول mysql_connect به جای localhost باید آدرس دیتابیس MySql تون روی سی پنل رو وارد کنید :


عزیز من همینو تو چند جا خوندم که در اکثر موارد آدرس localhost در سرور همون localhost میشه ، البته متوجه منظورتون هستم از پشتیبانیش پرسیدم همینو گفت بازم باید برم رو مخشون :)))

saeidkhphp
پنج شنبه 10 اردیبهشت 1394, 00:09 صبح
دلیل اینکه کاربران نمیتونن نخستین بار راهنماییتون کنن اینه که اطلاعات و خطاها رو نمینویسین
مشکل شما اینه که دو تا تابع *_ (http://php.net/manual/en/book.mysql.php)mysqli_* (http://php.net/manual/en/book.mysqli.php) , mysql (http://php.net/manual/en/book.mysql.php)دو تا تابع متفاوت هستند.
شما با تابع mysqli_connect کانکت میشین و با تابع mysql_select_db دیتابیستون رو انتخاب میکنید!!!!!
به جای خط زیر:

$db=mysql_select_db("fardafun_newdb",$con) or die ("couldn't select to database");
این خط رو بزارید:

$db=mysqli_select_db($con,"fardafun_newdb") or die ("couldn't select to database");

الان من همه رو با i نوشتم طبق گفته تون :

<?php// etesal be bank
$con=mysqli_connect("localhost","fardafun_ad","12345") or die("couldn't connect to server");
//entekhabe database
$db=mysqli_select_db($con,"fardafun_newdb") or die ("couldn't select to database");
// create table
$sql="create table newtttt(FirstName,LastName,Age)";
// vared kardane data be table
mysqli_query($con,"INSERT INTO newtttt(FirstName, LastName, Age)VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')");
mysqli_close($con);
?>
ببخشید داخل کد php چند بار نوشتم نشد مجبور شدم html بذارمش :(
و بعد از اجرا وارد سایت بشید دوستان فایلش رو دیگه تغیییر نمیدیم ببینید : اینو مینویسه :

couldn't select to database

yones_safari
پنج شنبه 10 اردیبهشت 1394, 00:24 صبح
خوب کدتون رو به شکل زیر تغییر بدین:


$con=mysqli_connect("localhost","fardafun_ad","12345","fardafun_newdb");
if(mysqli_connect_errno()) {
echo "Failed to connect to MySQL: ".mysqli_connect_error();
}
// create table
$sql="create table newtttt(FirstName,LastName,Age)";
// vared kardane data be table
mysqli_query($con,"INSERT INTO newtttt(FirstName, LastName, Age)VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')");


خطایی که نشون داده خوهد شد رو اینجا بنویسن تا بگم مشکلتون کجاست

saeidkhphp
پنج شنبه 10 اردیبهشت 1394, 00:38 صبح
کدی که فرمودید رو اینجا نوشتم :


<?php$con=mysqli_connect("localhost","fardafun_ad","12345","fardafun_newdb");if(mysqli_connect_errno()) { echo "Failed to connect to MySQL: ".mysqli_connect_error();}// create table$sql="create table newtttt(FirstName CHAR(30),LastName CHAR(30),Age INT)";// vared kardane data be tablemysqli_query($con,"INSERT INTO newtttt(FirstName, LastName, Age)VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')");mysqli_close($con);?>


و خطایی که بعد از اجرا میبینیم :



Warning: mysqli_connect() [function.mysqli-connect]: (42000/1044): Access denied for user 'fardafun_ad'@'localhost' to database 'fardafun_newdb' in /home/fardafun/public_html/jjj.php on line 2
Failed to connect to MySQL: Access denied for user 'fardafun_ad'@'localhost' to database 'fardafun_newdb'
Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in /home/fardafun/public_html/jjj.php on line 7

Warning: mysqli_close() expects parameter 1 to be mysqli, boolean given in /home/fardafun/public_html/jjj.php on line 8

اینجوری که من متوجه شدم میگه دسترسی کاربر تعریف شده غیر مجازه به دیتابیس ی که اونم قبلش تعریف کردیم !‌ نمیدونم باید چه کرد 0-( نمیدونم کاربری با سطح root داره یا نه

yones_safari
پنج شنبه 10 اردیبهشت 1394, 00:54 صبح
با همین اطلاعاتی که تو فایل مینویسید منظورم نام کاربری و رمز عبور دیتابیس هست، میتونید به phpmyadmin وارد بشید؟
اگه میخوایین مشکلتون زود حل بشه بیاین تو یاهو زودتر راهنماییتون کنم
تو پروفایلم هست اکانت یاهوم

saeidkhphp
پنج شنبه 10 اردیبهشت 1394, 01:00 صبح
با همین اطلاعاتی که تو فایل مینویسید منظورم نام کاربری و رمز عبور دیتابیس هست، میتونید به phpmyadmin وارد بشید؟

آره رمز عبوریه که خودم تعریف کردم تو فیلدش ، وقتی جوملا هم میخاستم اجرا کنم مراحل دیتابیسش یکی بود اون میشد راحت این نمیدونم چشه ، ببخشید دیگه مزاحمتون شدم ، ادامش باشه برا فردا مهندس سر حال باشیم * شبتون بخیر

saeidkhphp
پنج شنبه 10 اردیبهشت 1394, 01:10 صبح
مهندس من همیشه از Database عادی میساختم خودشو و یوزرشو ، یه Wizard Database هم بود ، تو اون رفتم و یه Database جدید با یوزر جدید تعریف کردم گذاشتم تو همون کد قبلی خودمون هیچ خطایی نداد ولی خبر بد اینکه تو phpMyAdmin بجز Database جدیدش هیچ table اضافه نشده !!! کداش :


<?php$con=mysqli_connect("localhost","fardafun_user","qwerty","fardafun_xx");if(mysqli_connect_errno()) { echo "Failed to connect to MySQL: ".mysqli_connect_error();}$db=mysqli_select_db($con ,"fardafun_xx") or die ("couldn't select to database");// create table$sql="create table mbc(FirstName CHAR(30),LastName CHAR(30),Age INT)";// vared kardane data be tablemysqli_query($con,"INSERT INTO mbc(FirstName, LastName, Age)VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')");mysqli_close($con);?>


تنها مشکل الان ساختن table ها و تزریق اطلاعات بهشون هست که با کدای قبلی جواب نمیده !

yones_safari
پنج شنبه 10 اردیبهشت 1394, 01:25 صبح
بعد اینکه دیتابیس و یوزر رو ساختی باید این دو تا رو به هم وصل کنی....
این لینک (http://www.hostnegar.com/learn/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B3%D8%A7%D8%AE%D8%AA-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%AF%D8%B1-cpanel) رو بخون شاید مشکلت همینجاست!!!!!

saeidkhphp
پنج شنبه 10 اردیبهشت 1394, 01:28 صبح
بعد اینکه دیتابیس و یوزر رو ساختی باید این دو تا رو به هم وصل کنی....
این لینک (http://www.hostnegar.com/learn/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B3%D8%A7%D8%AE%D8%AA-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%AF%D8%B1-cpanel) رو بخون شاید مشکلت همینجاست!!!!!

یونس جان دستت درد نکنه ، درست شد ، همون مشکل مرتبط نبودن بود و هم استفاده از Wizard Database که خودش مرتبط میکنه اتوماتیک
در هر حال خیلی خیلی ممنونم ازت
شبت بخیر

yones_safari
پنج شنبه 10 اردیبهشت 1394, 01:32 صبح
موفق باشی عزیز