duangong0690 2011-01-16 19:15
浏览 33

使用php在mysql中进行简单搜索

I have this code for search in mysql but it doesent run and i dont know why.

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <fieldset>
    <legend>search Employees</legend> 
     <form name="search" method="post" action= <?=$PHP_SELF?>>
     Αναζήτηση για: <input type="text" name="find" /> στο
     <Select NAME="field">
     <Option VALUE="fname">First Name</option>
     <Option VALUE="lname">Surname</option>
     <Option VALUE="phone">Phone</option>
     <Option VALUE="address">Address</option>
     </Select>
     <input type="hidden" name="searching" value="yes" />
     <input type="submit" name="search" value="Search" />
     </form>
     </fieldset>
    <? 
     //This is only displayed if they have submitted the form 
     if ($searching =="yes") 
     { 
     echo "<h2>Results</h2><p>"; 

     //If they did not enter a search term we give them an error 
     if ($find == "") 
     { 
     echo "<p>You forgot to enter a search term"; 
     exit; 
     } 

     // Otherwise we connect to our Database 
     mysql_connect("localhost", "root", "123") or die(mysql_error()); 
     mysql_select_db("ergasia2") or die(mysql_error()); 

     // We preform a bit of filtering 
     $find = strtoupper($find); 
     $find = strip_tags($find); 
     $find = trim ($find); 

     //Now we search for our search term, in the field the user specified 
     $data = mysql_query("SELECT * FROM EMPLOYEES WHERE upper($field) LIKE'%$find%'"); 

     //And we display the results 
     while($result = mysql_fetch_array( $data )) 
     { 
     echo $result['fname']; 
     echo " "; 
     echo $result['lname']; 
     echo "<br>"; 
     echo $result['info']; 
     echo "<br>"; 
     echo "<br>"; 
     } 

     //This counts the number or results - and if there wasn't any it gives them a little message explaining that 
     $anymatches=mysql_num_rows($data); 
     if ($anymatches == 0) 
     { 
     echo "Sorry, but we can not find an entry to match your query<br><br>"; 
     } 

     //And we remind them what they searched for 
     echo "<b>Searched For:</b> " .$find; 
     } 

 ?> 
  • 写回答

2条回答 默认 最新

  • dongwalun2507 2011-01-16 19:34
    关注

    Most probably because your query is wrong. You cannot use UPPER on column names like this. Also, not sure if your field name is like FIELD (full uppercase) or like Field (capitalize first letter only). And don't forget to escape your input!

    Try this:

    $escaped_field = mysql_real_escape_string($field);
    $field_name = strtoupper($escaped_field); // if you want FIELD
    $field_name = ucfirst($escaped_field);    // if you want Field
    $data = mysql_query("SELECT * FROM EMPLOYEES WHERE `$field_name` LIKE '%$find%'");
    

    I might add, if your table names/column names really are full uppercase (e.g.: FIELD), you might want to change this. Uppercase keywords are generally reserved keywords, so it can be confusing.

    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题