PDA

View Full Version : سوال: سینتکس درست دستور update در هنگام تماس با بانک اطلاعاتی



idocsidocs
سه شنبه 30 آذر 1389, 22:23 عصر
من برای تماس با بانک اطلاعاتی و آپدیت کردن جدول ها از کدهای زیر استفاده می کنم ولی همه کدها با ارور مواجه می شن. لطفا بگید چرا با ارور مواجه می شم؟



$sql = "update details set show='$_POST[radio]' where id ='1'";

$sql = "update details set show='$_POST[radio]' where id =1";

$sql = "update details set show=$_POST[radio] where id ='1'";

$sql = "update details set show=$_POST[radio] where id =1";


یکی از ارور ها رو در ادامه قرار دادم:


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 'show=yes where id =1' at line 1

من از این ارور سر در نیاوردم، لطفا راهنمایی کنید.

MSN_Issue
سه شنبه 30 آذر 1389, 22:56 عصر
دوست عزیز دستور آپدیدتون مشکلی نداره ، مشکل از اون $_POST[radio] هست که اصلا معنی نداره !!!
باید به این شکل وارد بشه :

$sql = " update details set show = '".$_POST['radio']."' where id = 1 "البته پر واضحه که این یکی از راههاست و تنها راه نیست !

mohsen6500
سه شنبه 30 آذر 1389, 23:01 عصر
سلام دوست عزیز
کد رو دارید اشتباه وارد میکنید
کد درستش اینه :
این یه مثال ساده :


$query = "update post set psub=('$sub'),pkey=('$key'),ptxt=('$text'),pcat=(' $catagory'),pathr=('$sathr'),pdate=('$date'),ptime =('$time') where pid = ('$postid')";

$result = mysql_query($query);


حالا اینجوری امتحان کن ببین چی میشه!
این عبارت پست رو توی یه تغییر ذخیره کن و اسم متغییر رو توی دیتایبس قرار بده
موفق باشی

idocsidocs
سه شنبه 30 آذر 1389, 23:44 عصر
سلام دوست عزیز
کد رو دارید اشتباه وارد میکنید
کد درستش اینه :
این یه مثال ساده :


$query = "update post set psub=('$sub'),pkey=('$key'),ptxt=('$text'),pcat=(' $catagory'),pathr=('$sathr'),pdate=('$date'),ptime =('$time') where pid = ('$postid')";

$result = mysql_query($query);
حالا اینجوری امتحان کن ببین چی میشه!
این عبارت پست رو توی یه تغییر ذخیره کن و اسم متغییر رو توی دیتایبس قرار بده
موفق باشی

در مورد پرانتزها توضیح می دید؟

من همیشه دستور update رو بدون پرانتزها بکار می برم و مشکلی هم ندارم بغیر از این کد.

idocsidocs
سه شنبه 30 آذر 1389, 23:48 عصر
دوست عزیز دستور آپدیدتون مشکلی نداره ، مشکل از اون $_POST[radio] هست که اصلا معنی نداره !!!
باید به این شکل وارد بشه :

$sql = " update details set show = '".$_POST['radio']."' where id = 1 "البته پر واضحه که این یکی از راههاست و تنها راه نیست !

وقتی متغیر رو توی دابل کتیشن می زاریم، باید مقدارش جای گزین بشه. می شه بیشتر توضیح بدید؟


من کد ارسالی شما رو استفاده کردم ولی باز هم با خطا مواجه شدم.

MSN_Issue
سه شنبه 30 آذر 1389, 23:52 عصر
اولا که متغییرتون رو اشتباه فراخوانی کردید !
درستش اونیه که نوشتم !
ثانیا متغییر شما یه رشته برمیگردونه که باید بین تک کتیشن قرار بگیره ...
حالا با این تفاسیر یکی از راههای این کار اون راهیه که توی پست قبل نوشتم !

lianteam
چهارشنبه 01 دی 1389, 00:14 صبح
دوست خوبمون MSN_Issue درست میگن
اگه ارور رو بخونی نوشته که باید دستور دیتابیس شما شبیه به این باشه 'show=yes where id =1'
شما وقتی توی تک کتیشن میزاری یعنی همون عبارت رو اینزرت کن که کارکتر هم داره و باید بین دابل کتیشن باشه.

درضمن شما میخوای مستقیم از نوار ابزار بگیری اون هم به صورت پست و بعد مستقیم بریزی توی دیتابیس و بهتره هیچ وقت چنین کاری نکنی که به این ارور ها برنخوری حالا که میخوای این رو بنویسی '$_POST[radio]' یعنی همین عبارت رو بزار واین مقدارها جایگزین نمیشن

idocsidocs
چهارشنبه 01 دی 1389, 01:12 صبح
دوست خوبمون MSN_Issue درست میگن
اگه ارور رو بخونی نوشته که باید دستور دیتابیس شما شبیه به این باشه 'show=yes where id =1'
شما وقتی توی تک کتیشن میزاری یعنی همون عبارت رو اینزرت کن که کارکتر هم داره و باید بین دابل کتیشن باشه.

درضمن شما میخوای مستقیم از نوار ابزار بگیری اون هم به صورت پست و بعد مستقیم بریزی توی دیتابیس و بهتره هیچ وقت چنین کاری نکنی که به این ارور ها برنخوری حالا که میخوای این رو بنویسی '$_POST[radio]' یعنی همین عبارت رو بزار واین مقدارها جایگزین نمیشن

با توجه به مطلب شما من دستور رو به دو صورت زیر نوشتم ولی با ارور مواجه شدم. الان چه دلیلی داره؟


$sql = "update details set 'show = yes where id = 1'";

$sql = 'update details set show = yes where id = 1';

lianteam
چهارشنبه 01 دی 1389, 08:59 صبح
اینجوری تست کن


$sql = "update details set show = 'yes' where id = '1'";


اینجا شما میخوای یه رشته ثابت رو ست کنی
ولی توی پست اولتون
میخوای بگیری و ست کنی


در ضمن اونی که مثال زده و گفته مثلا باید این شکلی باشه مثاله و نگفته دقیق

فایل پروژه رو بفرست تا چکش کنم

lianteam
چهارشنبه 01 دی 1389, 09:00 صبح
راستی این کوئری رو به چی کانکت کردی؟

idocsidocs
چهارشنبه 01 دی 1389, 12:17 عصر
راستی این کوئری رو به چی کانکت کردی؟

در ادامه دستور کامل رو براتون گذاشتم.



include('dbinfo.inc');
$cxn = mysqli_connect($host,$user,$password,$database)
or die ("امکان تماس با سرور وجود ندارد");
$sql = 'update table set show = yes where id = 1';
mysqli_set_charset($cxn, "utf8") or die("امکان انجام درخواست وجود ندارد: ".mysqli_error($cxn));
$result = mysqli_query($cxn,$sql) or die("امکان انجام درخواست وجود ندارد: ".mysqli_error($cxn));
if($result)
{


در ضمن باید بگم که همونطور که می بینید ارور ظاهر شده به نوع متغیر وارد شده در کوئری بستگی نداره.

استرینگ بالا یه رشته هست که با ارور مواجه می شه.

Mr.Moghadam
چهارشنبه 01 دی 1389, 14:53 عصر
سلام

آیا فیلد show از نوع بولیونه؟ یا توی مای اسکیوال از نوع کاراکتر تعریف کردی؟

اگه بولینه مثل زیر یه تست بزن


$sql = 'update table set show = true where id = 1';

lianteam
چهارشنبه 01 دی 1389, 22:02 عصر
خط اول که کوئری رو توی متغیر ریختی رو پاک کن و به جای خط ریزالت اینو بنویس


$result = mysql_query("update table set show = 'yes' where id = 1",$cxn)


تست کن ببین کار میکنه یا نه

idocsidocs
چهارشنبه 01 دی 1389, 23:40 عصر
سلام

آیا فیلد show از نوع بولیونه؟ یا توی مای اسکیوال از نوع کاراکتر تعریف کردی؟

اگه بولینه مثل زیر یه تست بزن


$sql = 'update table set show = true where id = 1';

مشکل حل شد. اسمی که برای ستون جدولم گذاشته بودم یه کلمه رزرو شده بود. تغییرش دادم و کد بخوبی اجرا شد.

ممنون از همکاریتون

idocsidocs
چهارشنبه 01 دی 1389, 23:41 عصر
خط اول که کوئری رو توی متغیر ریختی رو پاک کن و به جای خط ریزالت اینو بنویس


$result = mysql_query("update table set show = 'yes' where id = 1",$cxn)
تست کن ببین کار میکنه یا نه


مشکل حل شد. اسمی که برای ستون جدولم گذاشته بودم یه کلمه رزرو شده بود. تغییرش دادم و کد بخوبی اجرا شد.

ممنون از همکاریتون

mtchabok
پنج شنبه 02 دی 1389, 11:11 صبح
سلام
در این زمان بهتره که نام ستون رو بین کاراکتر ` قرار بدین تا با نامهای رزرو شده قاطی نشن . مثلا :

$result = mysql_query("update table set `show` = 'yes' where id = 1",$cxn)

idocsidocs
پنج شنبه 02 دی 1389, 13:25 عصر
سلام
در این زمان بهتره که نام ستون رو بین کاراکتر ` قرار بدین تا با نامهای رزرو شده قاطی نشن . مثلا :

$result = mysql_query("update table set `show` = 'yes' where id = 1",$cxn)

چرا از کارکترهای ' استفاده نکنم؟ می شه توضیح بدید که فرق کاراکتر ' با `چیه؟

Vahid Faraji
پنج شنبه 02 دی 1389, 14:29 عصر
كاراكتر ' براي مقادير استفاده مي شه ولي ` براي reserved words و اسم جداول و ستون ها استفاده مي شه.

idocsidocs
پنج شنبه 02 دی 1389, 20:06 عصر
كاراكتر ' براي مقادير استفاده مي شه ولي ` براي reserved words و اسم جداول و ستون ها استفاده مي شه.

این کاراکتر کاربرد دیگه ای نداره؟ یعنی نمی تونه جای کاراکتر ' استفاده بشه؟