PDA

View Full Version : مشکل نمایش پایگاه داده با PDO



PHPOnline
سه شنبه 29 مرداد 1392, 01: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']; ?>&nbsp;</td>
<td><?php echo $row['lname']; ?>&nbsp;</td>
<td><?php echo $row['avrage']; ?>&nbsp;</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, 01:56 صبح
فایل php.ini رو چک کنید ببیند که extension=php_pdo_mysql.dll پشت این ; نباشه !

navid3d_69
سه شنبه 29 مرداد 1392, 12:26 عصر
این درست هست




$sth = $conn->prepare($sql);
$sth->execute();
$result = $sth->fetchAll();





شما باید $result رو توی foreach بزارید

engmmrj
سه شنبه 29 مرداد 1392, 12:51 عصر
این درست هست




$sth = $conn->prepare($sql);
$sth->execute();
$result = $sth->fetchAll();





شما باید $result رو توی foreach بزارید
کد خودشون هم درست است !

navid3d_69
سه شنبه 29 مرداد 1392, 13:05 عصر
بدون statement کار کنه PDO

PHPOnline
سه شنبه 29 مرداد 1392, 13:21 عصر
فایل php.ini رو چک کنید ببیند که extension=php_pdo_mysql.dll پشت این ; نباشه !

ممنون از پاسخت
ولی درست نشد

PHPOnline
سه شنبه 29 مرداد 1392, 13:25 عصر
این درست هست




$sth = $conn->prepare($sql);
$sth->execute();
$result = $sth->fetchAll();





شما باید $result رو توی foreach بزارید

ممنون
متوجه نشدم ، میشه همین کد من رو تغییر بدید

navid3d_69
سه شنبه 29 مرداد 1392, 13:29 عصر
این کد رو جای کد قلی بزارین



$sql = 'Select * from students';
$sth = $conn->prepare($sql);
$sth->execute();
$result = $sth->fetchAll();


foreach ($result as $key=>$row) {

PHPOnline
پنج شنبه 31 مرداد 1392, 00:25 صبح
کد شما رو جایگزین کردم ، خطا رفع شد ولی اطلاعات نمایش داده نشد !

engmmrj
پنج شنبه 31 مرداد 1392, 00:33 صبح
کد شما رو جایگزین کردم ، خطا رفع شد ولی اطلاعات نمایش داده نشد !
چون در اون کد اطلاعات Print نشده !@

AliRezaPro
پنج شنبه 31 مرداد 1392, 00: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']; ?>&nbsp;</td>
<td><?php echo $row['lname']; ?>&nbsp;</td>
<td><?php echo $row['avrage']; ?>&nbsp;</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']);
}