unexpected T_VARIABLE

Mahmood_18 • منذ 6 سنوات

السلام عليكم

عندي مشكلة في متغير row$  حيث اريد أن اسمح للعضو بالدخول الى صفحة الادمن اذا كانت القيمة أكبر من صفر , ولكن عندي الخطأ التالي

Parse error: syntax error, unexpected '$row' (T_VARIABLE)

Notice: Undefined variable: con

الكود الذي قمت بأستخدامه 


// Check if user coming From HTTP Post requsted
if ($_SERVER["REQUEST_METHOD"] == 'POST' ) {

$username = $_POST['user'] ;
$password = $_POST['pass'] ;
$hashedpass =sha1 ($password) ;
   

  // Check if user EXIST In database
  $stmt = $con->prepare("SELECT username, password FROM user WHERE Username =? AND password =?") ;
  $stmt ->execute(array($username , $hashedpass)) 
  $row = $stmt->rowcount();
  echo $row;

  //If row > 0 This mean The database contain Record About This Username

  If ($row >0) {
  	echo 'welcome Back' . $username;
  }



}
 ?>

وشكرا :)

كلمات دليلية:

ساعد بالإجابة

"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."

الإجابات (6)

Ali Majrashi • منذ 6 سنوات

وعليكم السلام ورحمة الله وبركاته 

يوجد لديك خطأ بهذا السطر


$stmt ->execute(array($username , $hashedpass))

يوجد فراغ بين المتغير stmt و -> وبنهاية السطر لم تنهي الأمر بالفاصلة المنقوطة ;

وياريت توضح الطريقة المستخدمة او الكود المستخدم للإتصال بقاعدة البيانات هل هو MySQLi او PDO لان كودك لايحتوي على اي كود يتصل بقاعدة البيانات الا اذا كنت تضمن الملف للاتصال بملفاتك ويجب ذكره لتسهل المساعدة.

Mahmood_18 • منذ 6 سنوات

عدلت الفراغ ولكن نفس الخطأ اما طريقة الاتصال فقي بأستخدام PDO وقمت بعمل انكلود للملف والاتصال بالقاعدة ناجح 

الكود المستخدم :


<?php
$dsn= "mysql:host=localhost;dbname=web";
$user = "root";
$pass = "root";
$option = array( 
	PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES utf8',
	);


try {
    $con = new PDO($dsn , $user , $pass , $option);
    // set the PDO error mode to exception
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully"; 
    }
catch(PDOException $e)
    {
    echo "Connection failed: " . $e->getMessage();
    }
?>

 

الخطأ تحديدا في الاستعلام حسب على مااعتقد 


$stmt = $con->prepare("SELECT username, password FROM user WHERE Username =? AND password =?") ;

 

Ali Majrashi • منذ 6 سنوات

بعد ماعدلت الفراغ (الفراغ ليس سبب الخطأ عندك) ولكن هل انهيت نفس السطر بفاصلة منقوطة ; مثل ماقلت لك لانها هي سبب الخطأ 

بدل 


  $stmt ->execute(array($username , $hashedpass))

يصير


  $stmt->execute(array($username , $hashedpass));

prepare لديك صحيح وبدون مشاكل 

Mahmood_18 • منذ 6 سنوات

اي نعم اخي قمت بأضافة الفاصلة المنقوطة ولكن لم يتم حل المشكلة 

Ali Majrashi • منذ 6 سنوات

هل يظهر لك خطأ جديد او نفس الخطأ القديم ؟

Ali Majrashi • منذ 6 سنوات

جربت كودك لدي ويعمل بدون مشاكل أهم شي تأكد من اسم الجدول واسماء الأعمدة الي راح تحددهم او حاب تستعلم فيهم مثلا


$stmt = $con->prepare("SELECT username, password FROM user WHERE Username =? AND password =?") ;

انت مسوي WHERE Username وتاكد ان اسم العمود هنا صح وخاصه انه حساس للكتابة لاني اشوف في بداية الامر مسوي SELECT username فاكيد بيكون عندك تعارض ولاراح ترجع اي نتيجة

هذي وحده من الملاحظات اذا كان يظهر لك خطأ ياريت تشاركنا فيه عشان نقدر نساعدك

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !