PDA

View Full Version : سوال: مشکل در نمایش یک جدول با استفاده از متد GET



mahdi_apple
شنبه 02 آذر 1392, 15:41 عصر
با سلام
من میخوام لیست اجناس موجود در جدول رو در یک صفحه نمایش بدم و وقتی روی هر لینک کلیک میکنم اجناس مربوط به اون لینک برام نمایش داده بشه.من یسری کد نوشتم.این کد لیست اجناس رو نشون میده و لینکشون هم ایجاد میکنه و لی وقتی روی لینک کلیک میکنم ارور زیر رو میده
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\nazi\new.php on line 15
کد هایی که نوشتم:
کدهای index.php



<?php
include "cp/config.php";
?>
<?php
$result = mysql_query("SELECT * FROM `category` ORDER BY `catid` DESC LIMIT 10");

while ($row = mysql_fetch_assoc($result)) {
echo('<a href=news.php?catname='.$row["catname"].'>'.$row["catname"].'</a>'.'<br/>');
}
?>



کدهای new.php



<?php
$result = mysql_query("select * from 'item' WHERE catname=".$_GET['catname']);
//ارور مربوط به قسمت زیر می باشد
while ($row = mysql_fetch_assoc($result)) {
echo $row['fee'];
}

?>

mahmod2000
شنبه 02 آذر 1392, 16:02 عصر
فایل config.php رو در صفحه new.php اینکلود کردید؟

mahdi_apple
شنبه 02 آذر 1392, 16:06 عصر
فایل config.php رو در صفحه new.php اینکلود کردید؟
بله به دیتا بیس وصل میشه حتی برای امتحان در صفحه new .php یک echo ساده گرفتم و جواب داد.


echo $_GET['catname'];

2undercover
شنبه 02 آذر 1392, 16:18 عصر
اولا که کلا کدتون در مقابل SQL Injection بسیار ضعیفه. (پیشنهاد استفاده از PDO)

دوما توی کوئریتون دو طرف نام جدول به جای ' از ` استفاده کنید و بعد از catname= یک ' و بعد از اون متغیر PHP هم از یک ' دیگه استفاده کنید!

mahdi_apple
شنبه 02 آذر 1392, 16:45 عصر
اولا که کلا کدتون در مقابل SQL Injection بسیار ضعیفه. (پیشنهاد استفاده از PDO)

دوما توی کوئریتون دو طرف نام جدول به جای ' از ` استفاده کنید و بعد از catname= یک ' و بعد از اون متغیر PHP هم از یک ' دیگه استفاده کنید!
روی پیشنهادتون حتما کار میکنم
من کدرو تغییر دادم ولی همچنان ارور میده


$result = mysql_query("select * from `item` WHERE catname='.$_GET[catname]'");

mahmod2000
شنبه 02 آذر 1392, 17:39 عصر
میتونید از دستور PDO زیر انجام بدید
فایل config.php


$nameDB = 'DatabaseName';
$username = 'root';
$passwd = '';
$conn = new PDO('mysql:host=localhost;dbname='.$nameDB.'', $username, $passwd);


کد index.php


$stmt = $conn->prepare('SELECT * FROM `category` ORDER BY `id` DESC LIMIT 10');
$stmt->execute();
$result = $stmt->fetchAll();

foreach ($result as $catname)
{
echo('<a href=news.php?catname='.$catname["catname"].'>'.$catname["catname"].'</a>'.'');
}


فایل new.php


$stmt = $conn->prepare('SELECT * FROM `item` WHERE catname = :catname');
$stmt->bindValue(':catname', $_GET['catname']);
$stmt->execute();
$result = $stmt->fetch();

echo $result["fee"];

ابوذر محمودی
شنبه 02 آذر 1392, 18:14 عصر
روی پیشنهادتون حتما کار میکنم
من کدرو تغییر دادم ولی همچنان ارور میده


$result = mysql_query("select * from `item` WHERE catname='.$_GET[catname]'");

اون نقطه قبل GET_$ رو هم بردار

mahdi_apple
شنبه 02 آذر 1392, 18:18 عصر
خیلی ممنون مشکلم حل شد.این تاپیک باعث شد تا با PDO کار کنم که امنیتش بیشتره


$result = mysql_query("select * from `item` WHERE cat='$_GET[catname]'");
while ($row = mysql_fetch_assoc($result)) {
echo $row['cat'];
}

ابوذر محمودی
شنبه 02 آذر 1392, 18:24 عصر
کم کم باید به جای mysql از mysqli استفاده کرد ، اما ازونجا که pdo مزایای بیشتری نسبت به mysqli داره ، بهتره کار با pdo رو خوب یاد بگیرید و برای کار با دیتابیس ها از pdo استفاده کنید.