PDA

View Full Version : آموزش: رفع مشکل خطای syntax error, unexpected T_VARIABLE in



Louai_M
سه شنبه 17 دی 1392, 21:17 عصر
با سلام
دوستان من یک کلاس تعریف کردم که درون اون اطلاعات جدول یوزر را فراخوانی می کنم و درصفحات مورد نظر استفاده می کنم
حال من با خطای زیر مواجه شدم


Parse error: syntax error, unexpected T_VARIABLE in /home3/shadegan/public_html/controller/username.php on line 53
کد صفحه




کاربر عزیز <?php

include_once("../controller/username.php");
$username=new username();
$result=$username->SelectRow($username);
if(mysql_num_rows($result)>0)
{
echo $row['fullname'];
$fullname = $row['fullname'];
}
else
{
echo 'میهمان';
}
?> خوش آمدید


کد کلاس و خط 53




<?php
require_once('../includes/config.inc.php');

class username
{
private $db_host;
private $db_name;
private $db_user;
private $db_pass;

public function username()
{
global $db_host;
global $db_name;
global $db_user;
global $db_pass;

$this->host= $db_host;
$this->db = $db_name;
$this->user = $db_user;
$this->pass = $db_pass;
}
private function connect()
{
mysql_connect($this->host,$this->user,$this->pass);
mysql_select_db($this->db);
mysql_query('SET NAMES \'utf8\'');
}

public function GetNewID()
{
$this->connect();
$id=0;
$result=mysql_query('SELECT * FROM `tbllogin` ORDER BY `id` LIMIT 1');
if(mysql_num_rows($result)>0)
{
$id=mysql_result($result,0,0);
}
$id++;
return $id;
}

public function SelectAll()
{
$this->connect();
$result = mysql_query('SELECT * FROM `tbllogin` ORDER BY `id`');
return $result;
}

public function SelectRow($username)
{
$this->connect();
$result=mysql_query('SELECT * FROM `tbllogin` WHERE (`username`='$username')ORDER BY `id` LIMIT 1'); //خط 53
return $result;
}

}
?>


مشکل کجاست من می خواهم کاربر موقعی که وارد شد برا اساس یوزری که سشن ذخیره شده تو دیتابیس نام و نام خانوادگیش فراخوانی بشه

foreach
سه شنبه 17 دی 1392, 21:29 عصر
بجای


$result=mysql_query('SELECT * FROM `tbllogin` WHERE (`username`='$username')ORDER BY `id` LIMIT 1');

این رو بزارید


$result=mysql_query("SELECT * FROM `tbllogin` WHERE (`username`={$username})ORDER BY `id` LIMIT 1");

در واقع شما نمیتونید داخل ' ' از ' استفاده کنید و یا باید از " یا '\'\ استفاده کنید

2undercover
سه شنبه 17 دی 1392, 21:43 عصر
البته این کد بالا هم اشتباه هست و مقدار متغیر رو در کوئری قرار نمیده.

اولا که اکیدا پیشنهاد میشه از Mysqli یا PDO استفاده بکنید!

دوما کد صحیح این شکلی میشه:



$result=mysql_query("SELECT * FROM `tbllogin` WHERE (`username`='{$username}') ORDER BY `id` LIMIT 1");

MRmoon
چهارشنبه 18 دی 1392, 08:16 صبح
دوتا نقطه كنار متغير بزاريحل ميشه.

'salam ' . $user . '!!'

Louai_M
چهارشنبه 18 دی 1392, 20:10 عصر
با تشکر از دوستان
مشکل بالا رفع شد حالا خطای زیر را میگیره mysql_num_rows


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home3/shadegan/public_html/blog/index.php on line 73


خط 73


include_once("../controller/username.php");
$username=new username();
$result=$username->SelectRow($username1);
if(mysql_num_rows($result)>0) // خط 73
{
echo $row['fullname'];
}
else
{
echo 'میهمان';
}


مشکل از کجاست بالا


$username1 = $_SESSION['user'];

2undercover
چهارشنبه 18 دی 1392, 21:13 عصر
احتمالا توی کوئری مشکلی هست.

با استفاده از تابع mysql_error ببینید چه خطایی وجود داره!

Louai_M
پنج شنبه 19 دی 1392, 20:23 عصر
دوستان کسی نیست جواب بده

Louai_M
پنج شنبه 19 دی 1392, 20:28 عصر
mysql_error را گذاشتم این خطا را گرفت


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '})ORDER BY `id` LIMIT 1' at line 1

خط query


$result=mysql_query('SELECT * FROM `tbllogin` WHERE (`username`={$username1})ORDER BY `id` LIMIT 1');

Louai_M
پنج شنبه 19 دی 1392, 20:39 عصر
$this->connect();
$result=mysql_query('SELECT `fullname`,`username` FROM `tbllogin` WHERE (`username`={'$username1'})ORDER BY `id` LIMIT 1');
die(mysql_error());
return $result;

کد را به شکل فوق تغییر دادم خطای زیر را می گیرد


نمایش سایت خـــروج کاربر عزیز
Parse error: syntax error, unexpected T_VARIABLE in /home3/shadegan/public_html/controller/username.php on line 53


لطفاً کمک کنید

MMSHFE
پنج شنبه 19 دی 1392, 20:42 عصر
اون 1 بعد از username$ چیه؟ مگه اسم متغیرتون username$ نیست؟ ضمناً همیشه کوئری رو استاندارد بنویسید. برای اینکه از متغیر توی رشته ها استفاده کنید هم رشته رو توی کوتیشن جفت بگذارین:

$result = mysql_query("SELECT * FROM `tbllogin` WHERE (`username`='{$username}') ORDER BY `id` LIMIT 1");

Louai_M
پنج شنبه 19 دی 1392, 20:49 عصر
حالای خطای
Parse error: syntax error, unexpected '{' in /home3/shadegan/public_html/controller/username.php on line 53

// طریقه نوشتن کوئری استاندار منظورتون چطوری یعنی هرچی نام قیلد نام متغییر محتوا هم باید همان باشد

Louai_M
پنج شنبه 19 دی 1392, 21:06 عصر
با تشکر از همه دوستان مشکل حل شد

Louai_M
پنج شنبه 19 دی 1392, 21:09 عصر
برای نوشتن محتوای یک فیلد نام و نام خانوادگی بر اساس یوزر درست نوشتم یا خیر چون درست عمل میکنه ولی مشخصات را نشان نمی دهد



$loginuser=new loginuser();
$result=$loginuser->SelectRow($username);
if(mysql_num_rows($result)>0)
{
echo 'کاربر عزیز ';
echo $row['fullname'];
}

MMSHFE
جمعه 20 دی 1392, 17:45 عصر
کد کلاستون رو ندارم ولی قاعدتاً کدی که گذاشتین نباید کار کنه (اگه کلاس درست نوشته شده باشه). کد کلاس loginuser رو بگذارین ببینیم چطور داره کار میکنه.

aahmad
شنبه 30 فروردین 1399, 14:14 عصر
سلام و خسته نباشید خدمت شما
میخواستم ببینم اشکال این از کجاست؟

<?php
print_r($_POST)
$clr=$_POST['clcd'];
$color=array (
"#000000"=> array("name"=>"black","code"=>"000000")
"#ff0000"=> array("name"=>"red","code"=>"ff0000")
"#00ff00"=> array("name"=>"green","code"=>"00ff00")
"#0000ff"=> array("name"=>"blue","code"=>"0000ff")
"#ffff00"=> array("name"=>"yellow","code"=>"ffff00")
"#ff00ff"=> array("name"=>"purple","code"=>"ff00ff")
);
echo $color[$clr]['name'];
?>


Parse error: syntax error, unexpected '$clr' (T_VARIABLE) in C:\xampp\htdocs\mycode\show.php on line 3

plague
شنبه 30 فروردین 1399, 18:12 عصر
; نزاشتی آخر خط 2