View Full Version : مشکل نمایش پایگاه داده با PDO
  
PHPOnline
سه شنبه 29 مرداد 1392, 02:47 صبح
سلام دوستان گلم
فایل Connect.php
<?php
$host = 'localhost';
$username = 'root';
$password = '';
$dbname = 'college';
try {
	$conn = new PDO("mysql:host = $host;dbname = $dbname",$username,$password);
	return $conn;
}
catch(PDOExceptaion $e) {
	echo "Can not Connet to Database";
	exit();
}
?>
فایل Index.php
<?php
	require_once("connect.php");
?>
<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Connect to MYSQL With PDO</title>
</head>
<body>
	<table border = 1>
		<tr>
			<th>Name</th>
			<th>Family</th>
			<th>Avreage</th>
		</tr>
		<?php  
			$sql = 'Select * from students';
			foreach ($conn -> query($sql) as $row) {
				
			
		?>
		<tr>
			<td><?php echo $row['fname']; ?> </td>
			<td><?php echo $row['lname']; ?> </td>
			<td><?php echo $row['avrage']; ?> </td>
		</tr>
		<?php } ?>
	</table>
</body>
</html>
بعد از اجرا این خطا رو می ده : 
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\pdo\index.php on line 19
خط 19 هم Foreach هست
engmmrj
سه شنبه 29 مرداد 1392, 02:56 صبح
فایل php.ini رو چک کنید ببیند که extension=php_pdo_mysql.dll پشت این ; نباشه !
navid3d_69
سه شنبه 29 مرداد 1392, 13:26 عصر
این درست هست
$sth = $conn->prepare($sql);
$sth->execute();
$result = $sth->fetchAll();
شما باید $result رو توی foreach بزارید
engmmrj
سه شنبه 29 مرداد 1392, 13:51 عصر
این درست هست
$sth = $conn->prepare($sql);
$sth->execute();
$result = $sth->fetchAll();
شما باید $result رو توی foreach بزارید
کد خودشون هم درست است !
navid3d_69
سه شنبه 29 مرداد 1392, 14:05 عصر
بدون  statement  کار کنه PDO
PHPOnline
سه شنبه 29 مرداد 1392, 14:21 عصر
فایل php.ini رو چک کنید ببیند که extension=php_pdo_mysql.dll پشت این ; نباشه !
 
ممنون از پاسخت
ولی درست نشد
PHPOnline
سه شنبه 29 مرداد 1392, 14:25 عصر
این درست هست
$sth = $conn->prepare($sql);
$sth->execute();
$result = $sth->fetchAll();
شما باید $result رو توی foreach بزارید
 
ممنون
متوجه نشدم ، میشه همین کد من رو تغییر بدید
navid3d_69
سه شنبه 29 مرداد 1392, 14:29 عصر
این کد رو جای کد قلی بزارین
 $sql = 'Select * from students';
$sth = $conn->prepare($sql);
$sth->execute();
$result = $sth->fetchAll();
foreach ($result as $key=>$row) {
PHPOnline
پنج شنبه 31 مرداد 1392, 01:25 صبح
کد شما رو جایگزین کردم ، خطا رفع شد ولی اطلاعات نمایش داده نشد !
engmmrj
پنج شنبه 31 مرداد 1392, 01:33 صبح
کد شما رو جایگزین کردم ، خطا رفع شد ولی اطلاعات نمایش داده نشد !
چون  در اون کد اطلاعات Print نشده !@
AliRezaPro
پنج شنبه 31 مرداد 1392, 01:34 صبح
سلام دوستان گلم
فایل Connect.php
<?php
$host = 'localhost';
$username = 'root';
$password = '';
$dbname = 'college';
try {
	$conn = new PDO("mysql:host = $host;dbname = $dbname",$username,$password);
	return $conn;
}
catch(PDOExceptaion $e) {
	echo "Can not Connet to Database";
	exit();
}
?>
فایل Index.php
<?php
	require_once("connect.php");
?>
<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Connect to MYSQL With PDO</title>
</head>
<body>
	<table border = 1>
		<tr>
			<th>Name</th>
			<th>Family</th>
			<th>Avreage</th>
		</tr>
		<?php  
			$sql = 'Select * from students';
			foreach ($conn -> query($sql) as $row) {
				
			
		?>
		<tr>
			<td><?php echo $row['fname']; ?> </td>
			<td><?php echo $row['lname']; ?> </td>
			<td><?php echo $row['avrage']; ?> </td>
		</tr>
		<?php } ?>
	</table>
</body>
</html>
بعد از اجرا این خطا رو می ده : 
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\pdo\index.php on line 19
خط 19 هم Foreach هست
 
خوب باید هم error میگرفتید , نحوه کار کردن با PDO رو اگر کمی جستجو می کردید حتما به نتیجه میرسیدید  .یه تکه کد از یه کلاسم رو  برات میزارم
	private function connection() {
		try {
			$pdoCfg = array(PDO::ATTR_PERSISTENT => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'");
			$pdo = new PDO("mysql:host=localhost;dbname=weblog;charset=UTF-8", "root", "", $pdoCfg);
			return $pdo;
		} catch (PDOException $e) {
			echo "Failed to get DB handle: " . $e -> getMessage() . "\n";
			exit ;
		}
	}
	private function Get_statistic() {
		try {
			$flag = $this -> connection();
			$select = $flag -> prepare("SELECT sid,date,count FROM weblog.static");
			$select -> execute();
			return $select;
		} catch (PDOException $e) {
			echo "Fail to catch visit from Dataase";
		}
	}
و
	private function make_date_visit() {
		$pd = new bn_parsidate;
		$now = $this -> ChengeNumToEng(bndate('ymd'));
		$getStatistic = $this -> Get_statistic();
		for ($i = 0; $row = $getStatistic -> fetch(PDO::FETCH_ASSOC); $i++) {
			if ($now == $row['date']) {
				$this -> statistic['todaye'] = $row['count'];
				$this -> Ustatistic['todaye'] = $this -> Get_unique_statistic($row['sid']);
			}
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.