unexpected T_VARIABLE
السلام عليكم
عندي مشكلة في متغير 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)
وعليكم السلام ورحمة الله وبركاته
يوجد لديك خطأ بهذا السطر
$stmt ->execute(array($username , $hashedpass))
يوجد فراغ بين المتغير stmt و -> وبنهاية السطر لم تنهي الأمر بالفاصلة المنقوطة ;
وياريت توضح الطريقة المستخدمة او الكود المستخدم للإتصال بقاعدة البيانات هل هو MySQLi او PDO لان كودك لايحتوي على اي كود يتصل بقاعدة البيانات الا اذا كنت تضمن الملف للاتصال بملفاتك ويجب ذكره لتسهل المساعدة.
عدلت الفراغ ولكن نفس الخطأ اما طريقة الاتصال فقي بأستخدام 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 =?") ;
بعد ماعدلت الفراغ (الفراغ ليس سبب الخطأ عندك) ولكن هل انهيت نفس السطر بفاصلة منقوطة ; مثل ماقلت لك لانها هي سبب الخطأ
بدل
$stmt ->execute(array($username , $hashedpass))
يصير
$stmt->execute(array($username , $hashedpass));
prepare لديك صحيح وبدون مشاكل
جربت كودك لدي ويعمل بدون مشاكل أهم شي تأكد من اسم الجدول واسماء الأعمدة الي راح تحددهم او حاب تستعلم فيهم مثلا
$stmt = $con->prepare("SELECT username, password FROM user WHERE Username =? AND password =?") ;
انت مسوي WHERE Username وتاكد ان اسم العمود هنا صح وخاصه انه حساس للكتابة لاني اشوف في بداية الامر مسوي SELECT username فاكيد بيكون عندك تعارض ولاراح ترجع اي نتيجة
هذي وحده من الملاحظات اذا كان يظهر لك خطأ ياريت تشاركنا فيه عشان نقدر نساعدك
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !