PDA

View Full Version : Error این دستورا ها چیه؟



mrrajabi
پنج شنبه 29 شهریور 1386, 09:57 صبح
سلام دوستان عزیز.


<?php
session_start();

$param = $_GET['param'];
$ar = explode(",",$param);
$case = $ar[0];
$id = $ar[1];

$host = "localhost";
$user = "root";
$pass = "";
$DBname = "exam";

$link = mysql_connect($host,$user,$pass);
$db = mysql_select_db("Exam");

function funDel()
{
$sql = "delete from 'student' where 'id'= ".$id;
if($result = mysql_query($sql,$link))
{print("1");}
else
{print(mysql_error());}
}
switch($case)
{
case "Del" : funDel(); break;
default : break;

//other Case Statement
}



?>

یه برنامه با آژاکس است که از سمت کاربر یه پارامتر ارسال می کند و بر اساس این پارامتر سطری از جدول student با آید برابر با پارامتر ارسالی حذف می شود.
اروری که بهم میده این است :


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 ''student' where 'id'=' at line 1
ارور مربوط به عبارت $sql داخل تابع می باشد.
دوستان لطف کیند و کمکم کنید.

ArtCom
پنج شنبه 29 شهریور 1386, 11:32 صبح
$sql = "delete from student where id= ".$id;

و مطمئن باشید id مقدار null نداشته باشه.

tabib_m
پنج شنبه 29 شهریور 1386, 13:01 عصر
با اجازه ، تصحیح میکنم:



delete from `student` where `id`='$id'



و مطمئن باشید id مقدار null نداشته باشه.
به این کار هم نیازی نیست. :)

موفق باشید.

mrrajabi
پنج شنبه 29 شهریور 1386, 15:24 عصر
و مطمئن باشید id مقدار null نداشته باشه.
ممنون تبیب جان،مشکل تا حدودی این دستور بود.اما $id مقدار null داشت.چرا؟
مگه id که من اون بالا دارم متغیر سراسری نیست و داخل توابع باید شناخته شده باشد که اینجا اینطور نیست.
من مجبور شدم explode رو مجدداً در تابعم بنویسم تا بتونم id رو مقدار دهی کنم.



function funDel()
{
$ar = explode(",",$_get['param']);
$id = $ar[1];
$sql = "delete from 'student' where 'id'= ".$id;
if($result = mysql_query($sql,$link))
{print("1");}
else
{print(mysql_error());}
}
این کد الان جواب میده،یعنی قبلاً id ‌مقدار null داشت.

peyman1987
پنج شنبه 29 شهریور 1386, 15:56 عصر
نخیر دوست عزیز متغیر ID$ رو نمیتونین داخل تابع استفاده کنین. برای اینکار باید توی خط اول تابعتون بنویسین


GLOBAL $id;

musiox
پنج شنبه 29 شهریور 1386, 16:33 عصر
پس چرا این خطا رو نمی ده

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource

mrrajabi
پنج شنبه 29 شهریور 1386, 17:55 عصر
GLOBAL $id;

اصلاً ارور نداشت و متغیر آید مقدار null داشت.در ضمن من می خواستم متغیر سراسری در برنامه ام داشته باشم که داخل توابع از اون استفاده کنم و نه اینکه در تابعی متغیری را گلوبال کنم و در بدنه ی برنامه استفاده کنم.

cybercoder
جمعه 30 شهریور 1386, 11:51 صبح
delete from `student` where `id`='$id'
$id باید داخل دابل کتیشن باشه.

موفق باشید

peyman1987
جمعه 30 شهریور 1386, 20:22 عصر
اصلاً ارور نداشت و متغیر آید مقدار null داشت.در ضمن من می خواستم متغیر سراسری در برنامه ام داشته باشم که داخل توابع از اون استفاده کنم و نه اینکه در تابعی متغیری را گلوبال کنم و در بدنه ی برنامه استفاده کنم.




دوست عزیز این کد متغیر بیرون تابع رو درون تابع قابل استفاده میکنه نه متغیر درون تابع رو در بیرون از تابع.

معنی این دستور یعنی متغیر ID$ همون متغیر ID$ سراسریه.

armin390
شنبه 31 شهریور 1386, 10:55 صبح
RTFM (http://php.net/manual/en)
........