• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
خطای You have an error in your SQL syntax; check the manual t
#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 ''choices' WHERE question_number=1' at line 112
کدها به صورت زیر است:
ارتباط با دیتابیس
کد پی‌اچ‌پی:
<?php
  
//Create connection credentials
  
$db_host 'localhost';
  
$db_name 'quizzer';
  
$db_user 'root';
  
$db_pass '';

  
//Crate mysqli object
  
$mysqli = new mysqli($db_host $db_user $db_pass $db_name);

  
//Error Handle
  
if($mysqli->connect_error){
    
printf("Connect failed : %s/n" $mysqli->connect_error);
    exit();
  }
 
?>

[/php] <?php
?>کدهای اصلی
کد پی‌اچ‌پی:
<?php include 'database.php'?>
<?php
  
//Set question number
  
$number = (int) $_GET['n'];

  
/*
  * Get Question
  */
  
$query ="SELECT * FROM 'questions' WHERE question_number=$number";

  
//Get result
  
$result =$mysqli->query($query) or die($mysqli->error.__LINE__);



  
$question $result->fetch_assoc();
 
?>
  پاسخ
تشکر شده توسط :
#2
مشکل از ' در قسمت نام جدول هستش.
نباید از ' برای نام جداول و فیلدها استفاده کنی:
کد:
$query ="SELECT * FROM questions WHERE question_number = $number";
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط :
#3
(۱۳۹۶ فروردین ۱۴, ۰۴:۱۲ ق.ظ)Y.P.Y نوشته: مشکل از ' در قسمت نام جدول هستش.
نباید از ' برای نام جداول و فیلدها استفاده کنی:
کد:
$query ="SELECT * FROM questions WHERE question_number = $number";
تشکر بله دیگه دیر گفتید خودم فهمیدم و باز هم جاهای دیگه به این مشکل برخوردم و برطرف شد.
ممنون از شما
  پاسخ
تشکر شده توسط :
#4
حالا اگر دوست داری بیشتر بدونی، درستش اینه که کوئری رو اینطوری بنویسی:
کد پی‌اچ‌پی:
$query "SELECT * FROM `questions` WHERE `question_number` = {$number};"

بعلاوه این شیوه casting
کد پی‌اچ‌پی:
$number = (int) $_GET['n']; 
اگر n خالی باشه، یا NULL باشه یا نامعتبر باشه، 0 رو برمیگردونه و یک نتیجه دیگه در کوئریت ایجاد میکنه
همچنین اگر n بیشتر از 9999999999 (ده رقم) باشه، معمولاً 1410065407 رو برمیگردونه و باز هم یک نتیجه دیگه در کوئریت ایجاد میکنه(باگ میده برنامه)
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط :
#5
(۱۳۹۶ فروردین ۱۵, ۰۳:۳۵ ق.ظ)Y.P.Y نوشته: حالا اگر دوست داری بیشتر بدونی، درستش اینه که کوئری رو اینطوری بنویسی:
کد پی‌اچ‌پی:
$query "SELECT * FROM `questions` WHERE `question_number` = {$number};"

بعلاوه این شیوه casting
کد پی‌اچ‌پی:
$number = (int) $_GET['n']; 
اگر n خالی باشه، یا NULL باشه یا نامعتبر باشه، 0 رو برمیگردونه و یک نتیجه دیگه در کوئریت ایجاد میکنه
همچنین اگر n بیشتر از 9999999999 (ده رقم) باشه، معمولاً 1410065407 رو برمیگردونه و باز هم یک نتیجه دیگه در کوئریت ایجاد میکنه(باگ میده برنامه)

یکم بیشتر راجع بع این شیوه casting توضیح میدید؟
ببینید تو این ویدئو یه صفحه پی اچ پی ساخت به اسم question.php و بعد از صفحه اصلی که اسمش index.php بود به صفحه کوئسشن ریدایرکت کرد ولی نام صفحه رو اینجوری نوشت:
question.php?n=1
اون تیکه اخرش رو دقیقا نفهمیدم که چجوری شد.
اگه میشه یه توضیحی راجع به اون قسمت بدید ممنون میشم.
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان