• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل در استفاده از دستور select و قرار دادن شرط در pdo
#1
صفحه ای دارم با نام ListPost.php این صفحه مطالب سایتم رو لیست میکنه و کنارشون یه لینک قرار میده به این صورت
کد پی‌اچ‌پی:
<a href="EditPost.php?id=$id">Edit</a
که id مطلب رو میگیره و اگر کلیک شد روش با ای دی مطلب میره به صفحه edit حالا من در صفحه edit ای دی رو دریافت کرده ام اما میخوام بگم تو جدول android جایی که id اون برابر با $_GET['id'] بود تمام مشخصاتش رو بگیر و echo کن(منظورم متن مطلب ، لینکش ، عنوانش و... هست)
تو کار با ارور مواجه میشه که ارور اون هم Warning: Invalid argument supplied for foreach() in H:\morteza.f\xampp\htdocs\project\CMM\panel\EditPost.php on line 7
هست خوب یعنی اینجا $result در کد زیر مقدار نگرفته ! اما اشتباهی نمیبینم
این هم کد
کد پی‌اچ‌پی:
<?php 
    
if (isset($_GET['id'])) {
        
$id $_GET['id'];
        include 
'../Database_Config.php';
        
$sql "SELECT * fROM `android` WHERE id=".$id;
        
$result $connect ->query($sql);
        foreach (
$result as $rows) {
            echo 
$rows['title'];
            echo 
$rows['content'];
        }
        
    }
?>
دوستان بگن مشکل کد بالا چی هست و اصلاح شدش به چه شکل هست
(پیشاپیش تشکر)
  پاسخ
تشکر شده توسط :
#2
خروجی اجرای کوئری در pdo (با تابع query یا execute) یک شی از کلاس PDOStatement هست. شما برای اینکه به سطرهای نتیجه کوئری تون دسترسی داشته باشین باید از توابع fetch روی این شی استفاده کنید.

کد پی‌اچ‌پی:
<?php 
if (isset($_GET['id'])) {
    
$id $_GET['id'];
    include 
'../Database_Config.php';
    
$sql "SELECT * fROM `android` WHERE id=".$id;
    
$result $connect ->query($sql);
    if( 
$result->rowCount()>) {
        
$rows $result->fetchAll(PDO::FETCH_ASSOC);
        foreach (
$rows as $row) {
            echo 
$row['title'];
            echo 
$row['content'];
        }
    }
}
?>
به یـزدان که گر ما خرد داشتیم
کجـا این سر انجـام بد داشتیم؟
  پاسخ
تشکر شده توسط :
#3
توابع fetch دقیقا چه کاری رو انجام میدن؟
کدی که شما دادی رو امتحان کردم ارور زیر رو میده
Fatal error: Call to a member function rowCount() on a non-object in H:\morteza.f\xampp\htdocs\project\CMM\panel\EditPost.php on line 7
جهت پیگیری دقیق اینم محتویات فایل Database_Config.php
کد پی‌اچ‌پی:
<?php

    
try{
        
$servername 'localhost';
        
$dbname 'android';
        
$username 'root';
        
$password '';
        
$dsn "mysql:host=$servername;dbname=$dbname";
        
$connect = new PDO($dsn,$username,$password);
        return 
$connect;
        echo 
"connect";
    }catch(
PDOException $error){
        echo 
"Error in connect to database! : ".$error ->__toString();
    }
?>
  پاسخ
تشکر شده توسط :
#4
توابع fetch سطرهای نتیجه کوئری رو تحت یه آرایه برمیگردونه.
شما کوئری رو توی phpmyadmin تست کنید. شاید کوئری مشکل داره.
به یـزدان که گر ما خرد داشتیم
کجـا این سر انجـام بد داشتیم؟
  پاسخ
تشکر شده توسط : mortaza
#5
ممنون فهمیدم مشکل کجاست جای اسم جدول اسم دیتابیس نوشته بودم
  پاسخ
تشکر شده توسط :
#6
خوب گفتیم مثلا اگر id اون برابر $id که یه عدد هست بود فلان کار رو بکن که جواب داد
حالا من درگیر ساخت صفحه ی ثبت نام هستم اینجا میخوام بگم اگر username تکراری بود چاپ کنه که "هست" در غیر این صورت insert زو انجام بده عملیات اینسرت کار میکنه اما حالا که شرط تکراری نبودن رو اضافه کردن ارور میده Fatal error: Call to a member function rowCount() on a non-object in H:\morteza.f\xampp\htdocs\project\CMM\users\hid\INSERT.php on line 16
اما جالب اینجاست وقتی میگم اگر username اون برابر یک عدد مثلا یک باشه ارور نمیده اما وقتی میگم برابر متغییر $user که یک رشته هست باشه ارور میده
این هم کد
کد پی‌اچ‌پی:
<!DOCTYPE html>
<
html lang="fa">
<
head>
    <
meta charset="UTF-8">
    <
title>Document</title>
</
head>
<
body>
<?
php
    $name 
$_GET['name'];
    
$user $_GET['username'];
    
$pass $_GET['password'];
    
$email $_GET['email'];
    include 
'../../Database_Config.php';
    
$sql "SELECT * fROM `users` WHERE username=$user";
    
$result $connect ->query($sql);
    if( 
$result->rowCount()>) {
        echo 
$result->rowCount();
        echo 
"هست";
        
    }else{
        
$sql "INSERT INTO `users`(name,username,password,email) VALUES(:name,:username,:password,:email)";
        
$result $connect->prepare($sql);
        
$result ->bindParam(':name',$name);
        
$result ->bindParam(':username',$user);
        
$result ->bindParam(':password',$pass);
        
$result ->bindParam(':email',$email);
        
$query $result ->execute();
        if (
$query) {
            echo 
'ثبت نام با موفقیت انجام شد';
        }else{
            echo 
'ثبت نام با مشکل مواجه شد لطفا دوباره امتحان کنید.';
        }
    }

?>
</body>
</html> 
  پاسخ
تشکر شده توسط :
#7
لطفا تحت یک تاپیک جدید سوالتون رو مطرح کنید.
به یـزدان که گر ما خرد داشتیم
کجـا این سر انجـام بد داشتیم؟
  پاسخ
تشکر شده توسط :


پرش به انجمن:


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