PDA

View Full Version : سوال: این پیام خطا یعنی چی ؟؟؟



rash44
یک شنبه 02 فروردین 1388, 09:35 صبح
سلام


 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 ''to' , 'from' , 'subject' , 'message' , 'date') VALUES ('reza','rasol','salam te' at line 1
SQL:INSERT INTO message ('to' , 'from' , 'subject' , 'message' , 'date') VALUES ('reza','rasol','salam test','in the name of good','1388/01/02')

موقع اجرای کوئری این خطا رو میده

ahmadbadpey
یک شنبه 02 فروردین 1388, 10:21 صبح
syntax کوئری شما مشکل داره کاراکتر های ' قبل و بعد نام فیلد ها رو بردار ببین درست میشه

rash44
یک شنبه 02 فروردین 1388, 11:08 صبح
syntax کوئری شما مشکل داره کاراکتر های ' قبل و بعد نام فیلد ها رو بردار ببین درست میشه

سلام
بدون ' اجرا کردم اما همین خطا رو میده

ahmadbadpey
یک شنبه 02 فروردین 1388, 11:33 صبح
سلام
بدون ' اجرا کردم اما همین خطا رو میده
کد تو بذار یه نگاه بندازیم

rash44
یک شنبه 02 فروردین 1388, 12:57 عصر
کد تو بذار یه نگاه بندازیم

کد پی اچ پی :



<?php
//$from="rash";
//$to=$_POST['to'];
//$subject=$_POST['subject'];
//$comment=$_POST['comment'];
$from="ali";
$be="reza";
$subject="test";
$message="test";
require_once('lib/db.php');
require_once('lib/jdf.php');
$date=jdate("Y-m-d");
$link = db_connect();
$q = "INSERT INTO payam(from, be, subject, message, date) VALUES ('$from', '$be', '$subject', '$message', '$date')";
$result=mysql_query($q) or die(mysql_error() . "<br>SQL:" . $q);
echo "<script>alert('پیام شما با موفقیت ارسال شد')</script>";
echo "<meta http-equiv='refresh' content='0; URL=index.php'>";
db_close($link);
?>



ساحتار بانک ::



CREATE TABLE `payam` (
`id` int(11) NOT NULL auto_increment,
`from` varchar(50) collate utf8_persian_ci NOT NULL default '',
`be` varchar(50) collate utf8_persian_ci NOT NULL default '',
`subject` varchar(150) collate utf8_persian_ci NOT NULL default '',
`message` text collate utf8_persian_ci NOT NULL,
`date` date NOT NULL default '0000-00-00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=1 ;

Jason.Bourne
یک شنبه 02 فروردین 1388, 15:41 عصر
اینو تست کن



INSERT INTO `message` (`to` , `from` , `subject` , `message` , `date`) VALUES ('reza','rasol','salam test','in the name of good','1388/01/02')

rash44
یک شنبه 02 فروردین 1388, 16:27 عصر
سلام
این مشکل حل شد ولی 1 مشکل دیگه هیت که دقیقا همین خطا رو میده



<?php
$user=$_SESSION['user'];
require_once('lib/dbinfo.php');
$link = db_connect();
$q = "SELECT * FROM message WHERE to='$user'";
$result=mysql_query($q) or die(mysql_error() . "<br>SQL:" . $q);
//$result = db_query($q);
$nummessage = 0;
while ($line = db_fetch_assoc($result))
{
$nummessage++;
}
?>


متغیر سشن هم مقدار داره و نام کاربری رو بر میگردونه
اما خطا میده
وقتی که قسمت شرط کوئری رو برمی دارم جواب میده

خطا :


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 'to='rash'' at line 1
SQL:SELECT * FROM `message` WHERE to='rash'

Jason.Bourne
یک شنبه 02 فروردین 1388, 16:47 عصر
این را تست کن



$q = "SELECT * FROM `message` WHERE `to`='$user'";

rash44
یک شنبه 02 فروردین 1388, 17:25 عصر
این را تست کن



$q = "SELECT * FROM `message` WHERE `to`='$user'";

امتحان کردم اررور نمی ده ولی مقدار متغیرها صفر هست و چیزی از بانک بیرون نمی کشه



<?php
$numtext = 0;
$numok = 0;
$numno = 0;
$user=$_SESSION['user'];
$q2 = "SELECT * FROM 'text' WHERE 'by' = '$user'";
$result = db_query($q2);
while ($line = db_fetch_assoc($result)) {
$numtext++;
if($line['show'] === '0')
$numno++;
else if($line['show'] === '1')
$numok++;
}
?>

Jason.Bourne
یک شنبه 02 فروردین 1388, 18:32 عصر
این دیگه ربطی به query نداره.

rash44
یک شنبه 02 فروردین 1388, 19:28 عصر
سلام


$q = "UPDATE text SET show='1' WHERE id LIKE '$id'";



این کوئری توی 1 قسمت دیگه کار میکنه ولی 1جا دیگه نه

این دستورا قبلا همشون بدون هیچ مشکلی کار میکردن ولی الان دارن ارور قبلی میدن

کسی دلیلشو میدونه ؟؟؟؟

ahmadbadpey
یک شنبه 02 فروردین 1388, 20:11 عصر
سلام


$q = "UPDATE text SET show='1' WHERE id LIKE '$id'";



این کوئری توی 1 قسمت دیگه کار میکنه ولی 1جا دیگه نه

این دستورا قبلا همشون بدون هیچ مشکلی کار میکردن ولی الان دارن ارور قبلی میدن

کسی دلیلشو میدونه ؟؟؟؟
احتمالا نسخه mysql و php رو تغییر داده اید ؟

rash44
یک شنبه 02 فروردین 1388, 20:28 عصر
احتمالا نسخه mysql و php رو تغییر داده اید ؟

سلام
نه هیچ تغییری ندادم
از easy php که قبلا استغفاده مس کردم الان هم استفاده می کنم

ahmadbadpey
یک شنبه 02 فروردین 1388, 21:06 عصر
سلام
نه هیچ تغییری ندادم
از easy php که قبلا استغفاده مس کردم الان هم استفاده می کنم

نسخه easyphp رو چه طور . تغییرش دادین ؟؟؟

rash44
یک شنبه 02 فروردین 1388, 21:28 عصر
سلام
نه نسخه قبلی هست ورژن 1.8.0.0

Jason.Bourne
دوشنبه 03 فروردین 1388, 19:34 عصر
سلام


$q = "UPDATE text SET show='1' WHERE id LIKE '$id'";

این کوئری توی 1 قسمت دیگه کار میکنه ولی 1جا دیگه نه

این دستورا قبلا همشون بدون هیچ مشکلی کار میکردن ولی الان دارن ارور قبلی میدن

کسی دلیلشو میدونه ؟؟؟؟

اسم فیلدها و جداول را مابین `` قرار بده و مقادیر و متغیرها را مابین ' '
مانند:

UPDATE `text` SET `show`='1' WHERE `id` LIKE '$id' و متغیر ها را هم quotes بکن.

ahmadbadpey
دوشنبه 03 فروردین 1388, 20:17 عصر
کلید های این کاراکتر (`) روی صفحه کلید چیه ؟؟؟کسی می دونه

Jason.Bourne
دوشنبه 03 فروردین 1388, 20:41 عصر
بالای کلید TAB سمت چپ کلید 1

rash44
سه شنبه 04 فروردین 1388, 09:42 صبح
اسم فیلدها و جداول را مابین `` قرار بده و مقادیر و متغیرها را مابین ' '
مانند:

UPDATE `text` SET `show`='1' WHERE `id` LIKE '$id' و متغیر ها را هم quotes بکن.

سلام
والا این روش ها رو همه امتحان کردم
قبلا که اصلا اسم جدول و فیلد را توی '' نمی زاشتم درست بود


و متغیر ها را هم quotes بکن

یعنی چی ؟؟؟

Jason.Bourne
سه شنبه 04 فروردین 1388, 11:49 صبح
ببین magic_quotes_gpc در داخل php.ini فعال هست یا نیست؟

rash44
سه شنبه 04 فروردین 1388, 12:50 عصر
ببین magic_quotes_gpc در داخل php.ini فعال هست یا نیست؟

سلام
off هست

Jason.Bourne
سه شنبه 04 فروردین 1388, 13:07 عصر
متغیر ها را با استفاده از تابع addslashes و به شکل زیر quote بکن.


$lastname = addslashes($_POST['lastname']);

rash44
سه شنبه 04 فروردین 1388, 13:52 عصر
سلام
لطفا این کوئری رو چک کنید باز هم همین ارور رو میده



$q = "SELECT title,id FROM text id ORDER BY rand() LIMIT 5 WHERE `show`='1'";

rash44
سه شنبه 04 فروردین 1388, 13:53 عصر
متغیر ها را با استفاده از تابع addslashes و به شکل زیر quote بکن.


$lastname = addslashes($_POST['lastname']);

ببخشید اینکار یعنی چی و چه فایده ای داره ؟؟

Jason.Bourne
سه شنبه 04 فروردین 1388, 18:01 عصر
برای توضیحات بیشتر به آدرس زیر رجوع کنید.


http://ir.php.net/addslashes

rash44
سه شنبه 04 فروردین 1388, 18:33 عصر
سلام
لطفا این کوئری رو چک کنید باز هم همین ارور رو میده



$q = "SELECT title,id FROM text id ORDER BY rand() LIMIT 5 WHERE `show`='1'";

TheMohammad
چهارشنبه 05 فروردین 1388, 01:32 صبح
سلام
لطفا این کوئری رو چک کنید باز هم همین ارور رو میده



$q = "SELECT title,id FROM text id ORDER BY rand() LIMIT 5 WHERE `show`='1'";



شما مطمئنید مقدمات رو می دونید ؟

rash44
چهارشنبه 05 فروردین 1388, 09:58 صبح
اگه می دونستم که از شما نمی پرسیدم

حالا شما که می دونی بفرما بگو

TheMohammad
چهارشنبه 05 فروردین 1388, 14:18 عصر
اگه می دونستم که از شما نمی پرسیدم

حالا شما که می دونی بفرما بگو
اینهمه کتاب هست، توی اینترنت هم پیدا میشه، اون ها رو بخونید