مشکل در اتصال به دیتابیس

mohsen162

Member
سلام
بچه ها ید دنیا شرمنده من در پی اچ پی مبتدیم این کدهارو برای جستجو به دیتابیسی به نام db1نوشتم اما یک اخطار به این صورت میده
کد:
[B]Warning[/B]:  Division by zero in [B]C:\wamp\www\get\search.php[/B] on line [B]15[/B]
Query was empty
الان نمیدونم باید چه کنم کل فرمو میزارم خواهشن خواهشن کمک کنید
این فایل اچ تی ام الش هست
کد:
<html>
<body>
<form method="get" action="search.php">
   <p>
   <input type="text" name="q" size="20">
   <input type="submit" value="Search" name="searchBtn">
   </p>
   </body>
   </html>
این هم فایل سرچش هست
کد:
<?php

if(!isset($_GET["q"]))
   die("The Search key word is not set!");

$key = $_GET["q"];
if($key == "")
   die("The Search key word must be entered!");
   $age='q';
   $db = 'db1';  
$link = mysql_connect('localhost', 'root', '');
mysql_select_db( $db, $link ) or die ( "Couldn't open $db: ".mysql_error() );

$sql = "SELECT * FROM 'mytable'
     WHERE '$age' LIKE "%".$key"%" ";
     
    $SearchResult = query($sql) or die(mysql_error() . $sql);

    $TotalResults = num_rows($SearchResult);

if($TotalResults <= 0)
   die('Not found any record for your key word!');

for($i  = 0; $i != $TotalResults; $i++ )
{


    $Textfirstname= mysql_result($SearchResult, $i, 1);
    $Textlastname = mysql_result($SearchResult, $i, 2);

    print($Textfirstname ." ==> ". $Textlastname ."<br /><br />");


}

?>
 

greencat

Member
سلام
این طور که معلوم هستش از خطا مشکل در کوئری شما هستش شاید برای این باشه که دات قبل از % دومی رو نزاشتید و استفاده ناصحیح از " :
کد:
"SELECT * FROM 'mytable' WHERE '$age' LIKE '%".$key."%' ";
این رو تست کنید.
 

mohsen162

Member
الان این ارورو میده
کد:
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 ''mytable'  WHERE 'q' LIKE '%20%'' at line 1SELECT * FROM 'mytable' WHERE 'q' LIKE  '%20%'
 

mohsen162

Member
یک دنیا ممنون درست شد فقط وقتی توی دیتابیس یکی رکوردو وارد میکنم که سنش مثلا 23 هست وقتی سرچش میکنم
اینو نشون میده
کد:
Not found any record for your key word!
 

sajadmaz

Member
PHP:
"SELECT * FROM `mytable` WHERE  `age`     LIKE '%".$key."%' ";

'age' is column name

بعدشم شما اومدی اول و آخر $key % گذاشتی این یعنی هر عبارتی که داخلش 25 باشه !!
 

mohsen162

Member
آقا خیلی ممنون درست شد
من یک فرم ساختم که شکایاتو میگیره بعد یک شماره پیگیری میده به شاکی من میخوام با این دستورها به دیتابیس وصل بشه و جوابی که برای اون کد پیگیری وارد کردمو ببینه یکجا خوندم این این کدها امنیت نداره میتونید بگید چیکارش کنم که امنیتش بالا بره
بعد فارسی که تو دیتابیس می نویسم اینجور نشون میده؟؟؟؟؟ در صورتی که من تمام دیتابیسمو utfتنظیم کردم
ممنون
 

mohsen162

Member
این کدهاست
کد:
<?php

header("Content-type: text/html; charset=UTF-8"); 
if(!isset($_GET["q"]))
   die("The Search key word is not set!");

$key = $_GET["q"];
if($key == "")
   die("The Search key word must be entered!");
  
   $F10='q';
   $db = 'bushehr'; 
   
$link = mysql_connect('localhost', 'root', '');
 mysql_set_charset('utf8_unicode_ci',$link);  
mysql_select_db( $db, $link ) or die ( "Couldn't open $db: ".mysql_error() );

$sql ="SELECT * FROM `jos_ckforms_2` WHERE  `F10`     LIKE '%".$key."%' ";
    
     
    $SearchResult = mysql_query($sql) or die(mysql_error() . $sql);

    $TotalResults = mysql_num_rows($SearchResult);

if($TotalResults <= 0)
   die('موردی یافت نشد');

for($i  = 0; $i != $TotalResults; $i++ )
{


    $TextF11= mysql_result($SearchResult, $i, 1);
    $TextF12 = mysql_result($SearchResult, $i, 2);

    print($TextF11 ." ==> ". $TextF12."<br /><br />");


}

?>
 

mohsen162

Member
سلام گذاشتم یکی از امنیتش بگید بعدشم اگه خوب بررسی کنید هر کاری برای فارسی سازیش تونستم انجام دادم اما وقتی از دیتابیس یک چیزو می خونه که فارسی باشه ؟؟؟؟ نشون میده در صورتی که جدولم توی دیتابیسutf8 تنظیم کردم یعنی تو دیتابیس هم درسته اما خروجی مشاهده شده با این صورت ؟؟؟؟ نشون میده
 

greencat

Member
سلام
هم جدول‌هاتون رو و هم فیلد‌هایی رو که قرار هستش توشون کاراکتر‌های فارسی قرار بگیره روی collation : utf8_general_ci قرار بدید و به جای کد زیر :

کد:
$link = mysql_connect('localhost', 'root', '');
 mysql_set_charset('utf8_unicode_ci',$link);  
mysql_select_db( $db, $link ) or die ( "Couldn't open $db: ".mysql_error() );

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

کد:
$link = mysql_connect('localhost', 'root', '');
mysql_select_db( $db, $link ) or die ( "Couldn't open $db: ".mysql_error() );
mysql_query("set names 'utf8'");

و برای امنیتش شما مقدار $key رو فیلتر و پاک سازی نکردید و مستقیما توی کوئری تون استفاده کردید که این کار مشکل امنیتی داره اول باید از فیلتر ردش کنید و پاک سازی و امن بشه بعدا توی کوئری تون از اون استفاده کنید.
موفق باشید.
 

جدیدترین ارسال ها

بالا