جستجو در بخش : سوال جواب منابع اسلامی لغت نامه ها قوانین و مصوبات نقل قل ها
×

فرم ورود

ورود با گوگل ورود با گوگل ورود با تلگرام ورود با تلگرام
رمز عبور را فراموش کرده ام عضو نیستم، می خواهم عضو شوم
×

×

آدرس بخش انتخاب شده


جهت کپی کردن میتوانید از دکمه های Ctrl + C استفاده کنید
رویداد ها - امتیازات
در حال بارگذاری
×

رویداد ها - امتیازات

برای بررسی عملکرد فعالیت و امتیازات خود باید در وب سایت وارد باشید. در صورت عضویت از بخش بالای صفحه وارد شوید، در غیر این صورت از دکمه پایین، مستقیم به صفحه ثبت نام وارد شوید.

×
×
×

دلیل درخواست بستن پست

کلیه پست هایی که جنبه تبلیغاتی داشته، محتوای اسپم و بی مفهوم در این دسته قرار میگیرند. همچنین پست هایی که به منظور گرفتن بک لینک درج می شوند شامل این مورد هستند.
حاوی مفاهیم غیر اخلاقی، سیاسی و یا توهین آمیز. کلیه پست هایی که از نظر محتوایی نیاز به بررسی و یا حذف شدن دارند در این دسته قرار می گیرند.
محتوایی با عدم جزئیات کافی و مورد نیاز. کلیه پست هایی که منظور نویسنده به وضوح مشخص نیست و نیازمند توضیحات و جزئیات بیشتر می باشند در این دسته قرار می گیرند.
محتوایی بی ربط با موضوعیت سرفصل کلی. کلیه پست هایی که از منظر مفهوم و مضمون ارتباطی با عنوان اصلی سوال ندارند در این دسته قرار می گیرند.
محتوایی دلخواه و بر پایه سلیقه. کلیه پست هایی که یک پاسخ مشخص ندارند و متوانند چندین پاسخ متفاوت و صحیح داشته باشند که کاملا مبتنی بر نظر شخصی افراد هستند در این دسته قرار می گیرند.
محتوایی در حوزه خیلی وسیع. کلیه پست هایی که از نظر محتوایی در یک حوزه ی وسیعی قرار دارند و مشخصا به یک موضوع خاصی اشاره ندارند که پاسخدهی به آن ها مستلزم تشریح مفاهیمی کلی می باشند در این دسته قرار می گیرند.
قبلا در لام تا کام مطرح شده. پست هایی که دقیقا با همین محتوا و مضمون قبلا در وب سایت لام تا کام درج شده اند، با ذکر آدرس منبع تکراری با پست حال حاضر شامل این دسته هستند. تکراری است با:
به سایر دلایل، نیازمند به بررسی توسط مدیر. به هر دلیل غیری که پست را نیازمند بررسی توسط مدیر کرده، با ذکر دلیل، در این دسته قرار میگیرد.
ارسال رای بستن

علت ارور error in your SQL syntax; check the manual that corresponds to your MariaDB server ؟


2
0
3446

این کدی که نوشتم رو بارها و بارها چک کردم ، بررسی کردم اما موقع اجرا کردن به من این ارور رو میده:

خطایی که میده :

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '52, [email protected])VALUES ('niki','52','[email protected]')' at line 1

و کدی هم که نوشتم اینه:

<?php 
if(isset($_POST['submit'])){
   $Name= $_POST ['Name'];
   $Password = $_POST [ 'Password'];
  $Email= $_POST [ 'Email'];
   $connection = mysqli_connect('127.0.0.1','root','','loginapp');
   if($connection){
      echo "Hi Dude , we are conneted";
   }else{
      die('DataBase is Failed');
   }
   $query = "INSERT INTO `users`($Name , $Password, $Email)" ; 
   $query .= "VALUES ('$Name','$Password','$Email')";
  $result = mysqli_query($connection , $query);
  if (!$result){
     die('Query FAILED'. mysqli_error($connection));
  }
}else { 
   echo "Record Create";

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


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

error :

check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Email = '[email protected]' WHERE id = 3' at line 1

code :

<?php
    if(isset($_POST['submit'])){
        $username=$_POST['Name'];
        $password = $_POST['Password'];
        $email = $_POST['Email'];
        $id = $_POST['id'];

        $query = "UPDATE `users` SET  ";
        $query .=" `Name` = '$username' ";
        $query .= "  `Password` = '$password' ";
        $query .= " `Email` = '$email' " ;
        $query .=" WHERE id = $id " ;

       $result = mysqli_query($connection , $query);
    if(!$result){
        die("Query Failed". mysqli_error($connection));
    }
    }
    ?>
علمی برنامه-نویسی پایگاه-داده پی-اچ-پی طراحی-وب کامپیوتر
ویرایش شده در 5 سال قبل
سوال شده در امیر کریمی
30 امتیاز


از چه دیتابیسی استفاده می کنید؟ mariadb یا mysql ؟ ــ ساناز رضایی در 5 سال قبل
2
@ساناز.رضایی توی کوئری که دوستمون توی سوالشون نوشتن، دیتابیس های mysql و mariadb دقیقا رفتار مشابه دارند. پس چه فرقی می کنه که دوستمون از چه پایگاه داده ای (دیتابیسی) دارن استفاده می کنن؟ میشه یک مقدار توضیح بدید که دلیلتون از پرسیدن اسم دیتابیسشون چیه؟ ــ سعید مرادی در 5 سال قبل
1
@سعید.مرادی بله در سوالی که ایشون پرسیدن، عملکرد دیتابیس های mariadb و mysql باهم فرقی ندارند. ولی این رو پرسیدم به این خاطر که پرسشگر متوجه بشه وقتی سوالی مرتبط با دیتابیس میپرسه باید اسم دقیق دیتابیس رو هم ذکر کنه؛ چرا که این امکان وجود داره در سوال های بعدی ایشون، دانستن نام دیتابیس الزامی باشه. ــ ساناز رضایی در 5 سال قبل
1
براي بخش ويرايش شده ي سوالتون مشكل از نزاشتن كاما هست بين ستون هايي كه ميخوايد UPDATE كنيد. تا يك ساعت آينده كامپيوتر دم دستم نيست. ولي تا ساعاتي ديگه جوابم رو بروزرساني ميكنم متناسب با اين مشكل جديدت. ــ سعید مرادی در 5 سال قبل
1
بله مشکل حل شد سپاسگذارم ــ امیر کریمی در 5 سال قبل
1
به عنوان یک نکته، وقتی میخواید برای کسی پیامی بفرستید، باید با کاراکتر @ ایشون رو صدا بزنید که براشون نوتیفیکیشن بره و مطلع بشن از پیام شما و بیان بهتون پاسخ بدن. (نحوه صدا زدن افراد در پیام ها در لام تا کام ) ــ سعید مرادی در 5 سال قبل

500 کاراکتر باقی مانده

3 جواب

0

تمام چیزی که شما بهش احتیاج دارید، استفاده از بک-تیک backtick یا همین کاراکتر

` 

هستش. که باید نام ستون های بانک اطلاعاتیتون (دیتابیستون) رو توش بزارید. به این شکل:

$query = "INSERT INTO `users` (`Name` , `Password`, `Email`)" ;

امیدوارم که مشکلتون رو حل بکنه.


به عنوان پاسخ به بخش دوم سوال شما، (UPDATE یا همان بروز رسانی فیلد ها) باید عرض کنم که طبق داکیومنتیشن، برای دستور UPDATE ، ستون ها رو در بخش SET باید با , از همدیگه جدا کنید:

$query = "UPDATE `users` SET  ";
$query .=" `Name` = '$username', ";
$query .= "  `Password` = '$password', ";
$query .= " `Email` = '$email' " ;
$query .=" WHERE id = $id " ;
ویرایش شده در 5 سال قبل
جواب داده شده در سعید مرادی
1933 امتیاز


لطفا در پاسختون، توضیحات مورد نیاز برای روشی که دارید ازش استفاده می کنید و یا دلیل کاری که دارید میکنید رو هم ضمیمه کنید که پرسشگر بهتر متوجه پاسخ شما (به عبارت بهتر، پاسخ سوال خودش) بشه. ــ سجاد شفی زاده در 5 سال قبل

خیلی هم عالی ...مرسی از توضیحات خوبی که دادین جناب شفی زاده. منتهی مراتب من خیلی تازه کارم مخصوصا تو زمینه کار با دیتابیس. اینه که سوال برام زیاد پیش میاد و زیاد به مشکل برمیخورم ،اینه که ممکنه تو سوالای بعدی هم راهنماییم کنین؟ ــ امیر کریمی در 5 سال قبل

@امیر.کریمی عزيز؛ بنده مرادي هستم (شما پاسخ بنده رو تاييد فرموديد، نه مال كناب شفي زاده رو)؛ براي سوال هاي اتي شما هم بله قطعا هم من و هم سايت متخصصان در بستر لام تا كام اماده پاسخكويي به سوالات شما عزيزان هستيم ــ سعید مرادی در 5 سال قبل
1
بله من عذر خواهی میکنم .به هرحال بازم ممنون ــ امیر کریمی در 5 سال قبل

آقا سعید ی سوال دیگه داشتم ، این رو هم ممکنه یه نگاهی بندازی ببینی ایرادش کجاست؟ ــ امیر کریمی در 5 سال قبل

@امیر.کریمی پاسخم رو ویرایش کردم و امیدوارم که مشکلتون رو حل کنه. فقط طبق قوانین لام تا کام، هر سوال باید مربوط به یک موضوع و مشکل مشخص باشه. لطفا در آینده در صورت وجود سوال های بعدی، اون رو به صورت یک سوال جدید بپرسید. ــ سعید مرادی در 5 سال قبل

500 کاراکتر باقی مانده


3

مشکل کوئری شما، استفاده از متغییرهای مقادیر سابمیت شده در فرمی هست که کاربر تکمیل میکنه. مشکل ایجاست:

INSERT INTO `users`($Name , $Password, $Email)

من از کجا این رو حدس میزنم؟ از بخشی از اروری که داره میگه syntax ارور وجود داره توی کوئری

near '52, [email protected])VALUES ('niki','52','[email protected]')'

همونطور که میبینید، توی ارور بالا، نوشته شده که نزدیک 52! بعد از اون کلیدواژه VALUES اومده. این به این معنی هست که 52 رو (که کاربر به عنوان مقدار فیلد Password در فرم وارد کرده) به عنوان ستون در دیتابیس فرض کرده. و از اونجایی که نام ستون ها در دیتابیس (MySQL و MariaDB) نمیتونن با اعداد شروع بشن، باعث شده که ارور سینتکسی syntax بده.

نکته: چیزی که قبل از VALUES میاد در کوئری، اسامی ستون های دیتابیس هستند، و چیزی که بعد از اون کلیدواژه میاد، مقادیری هستن که قصد داریم در دیتابیس وارد کنیم.

حالا کاری که باید انجام بشه اینه که بجای استفاده از متغییر در کوئری (به عنوان اسامی ستون های جدول دیتابیس)، صرفا نام دقیق ستون ها رو به صورت hardcode بنویسید. به این شکل:

$query = "INSERT INTO `users` (Name , Password, Email)" ;

با فرض اینکه نام های Name، Password و Email دقیقا نام های ستون های جدول شما باشن در دیتابیس.

شایان ذکر هست که باید از کاراکتر بک تیک هم استفاده بکنید اطراف نام های ستون ها (همانطور که آقای مرادی هم اشاره کردند). دلیل این کار هم escape کردن واژگان از پیش رزرو شده در دیتابیس هست. به این معنی که، خود دیتابیس یک سری کلیدواژه رو از قبل رزرو کرده، مثلا واژه key. و شما نمیتونی از این واژه به عنوان نام یک ستون استفاده کنی. چرا که زمانی که از key در کوئریت استفاده میکنی، مفسر کوئری اون رو بجای نام ستون شما، همون چیزی میشناسه که از قبل خود دیتابیس براش تعریف کرده؛ ولی اگر شما از بک تیک (`) استفاده کنی، مفسر دیتابیس موقع اجرا کردن کوئری اون رو به عنوان نام ستون جدول شما در دیتابیس میشناسه.

پس باید کوئریت رو به این شکل بنویسی:

$query = "INSERT INTO `users` (`Name` , `Password`, `Email`)" ;

کد کامل:

<?php 
if(isset($_POST['submit'])){
   $Name= $_POST ['Name'];
   $Password = $_POST [ 'Password'];
  $Email= $_POST [ 'Email'];
   $connection = mysqli_connect('127.0.0.1','root','','loginapp');
   if($connection){
      echo "Hi Dude , we are conneted";
   }else{
      die('DataBase is Failed');
   }
   $query = "INSERT INTO `users`(`Name` , `Password`, `Email`)" ; 
   $query .= "VALUES ('$Name','$Password','$Email')";
  $result = mysqli_query($connection , $query);
  if (!$result){
     die('Query FAILED'. mysqli_error($connection));
  }
}else { 
   echo "Record Create";
}

موفق باشید.

ویرایش شده در 5 سال قبل
جواب داده شده در سجاد شفی زاده <m>★</m>
11.1k امتیاز


کلا اعداد نمیتونن در اسم ستون ها باشن در دیتابیس یا اعداد میتونن باشن ولی نمیتونن ابتدای نام قرار بگیرند؟ آخه من خودم یک ستون داشتم با نام case1 و بدرستی هم کار می کرد. (همونطور که میبینید کاراکتر 1 که یک عدده توی اسمش هست) ــ سعید مرادی در 5 سال قبل

@سعید.مرادی به استفاده از اعداد در نام ستون ها اوکیه! فقط همونطور که گفتم نباید عدد در ابتدای نام ستون قرار بگیره. اینم بگم که دقیقا مشابه همین رو زبان برنامه نویسی PHP هم برای نام متغییرهاش داره. شما نمیتونی در PHP متغییری تعریف کنی که اسمش با عدد شروع بشه. ــ سجاد شفی زاده در 5 سال قبل

500 کاراکتر باقی مانده


0

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

جواب داده شده در ali arkhodi ghalenoie
1 امتیاز

500 کاراکتر باقی مانده


جواب شما
     
.....
×

×

جعبه لام تا کام


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

تبلیغات توضیحی


داپ اَپ اولین پلتفرم کش‌بک در ایران
اگه میخوای از خریدهایی که میکنی، پاداش نقدی دریافت کنی داپ اَپ رو نصب کن.

تبلیغات تصویری