【问题标题】:converting mysql query to oracle query将mysql查询转换为oracle查询
【发布时间】:2019-07-29 08:13:53
【问题描述】:

我将我的数据库更改为 oracle,我想知道我应该更改哪些代码。 当我自己尝试时,它没有用。它给了我

警告:mysql_real_escape_string() 期望参数 1 是字符串,资源在 D:\xampp\htdocs\advance_search.php 第 40 行给出

致命错误:调用未定义的函数 oci_query() D:\xampp\htdocs\advance_search.php 第 44 行

错误..

     <?php  
 $connect = mysqli_connect("localhost", "root", "", "test_db");  
 if(isset($_POST["submit"]))  
 {  
      if(!empty($_POST["search"]))  
      {  
           $query = str_replace(" ", "+", $_POST["search"]);  
           header("location:advance_search.php?search=" . $query);  
      }  
 }  
 ?>  
 <!DOCTYPE html>  
 <html>  
      <head>  
           <title>Webslesson Tutorial | Search multiple words at a time in Mysql php</title>  
           <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />  
           <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>  
           <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>  
      </head>  
      <body>  
           <br /><br />  
           <div class="container" style="width:500px;">  
                <h3 align="center">Search multiple words at a time in Mysql php</h3><br />  
                <form method="post">  
                     <label>Enter Search Text</label>  
                     <input type="text" name="search" class="form-control" value="<?php if(isset($_GET["search"])) echo $_GET["search"]; ?>" />  
                     <br />  
                     <input type="submit" name="submit" class="btn btn-info" value="Search" />  
                </form>  
                <br /><br />  
                <div class="table-responsive">  
                     <table class="table table-bordered">  
                     <?php  
                     if(isset($_GET["search"]))  
                     {  
                          $condition = '';  
                          $query = explode(" ", $_GET["search"]);  
                          foreach($query as $text)  
                          {  
                               $condition .= "video_title LIKE '%".mysqli_real_escape_string($connect, $text)."%' OR ";  
                          }  
                          $condition = substr($condition, 0, -4);  
                          $sql_query = "SELECT * FROM tbl_video WHERE " . $condition;  
                          $result = mysqli_query($connect, $sql_query);  
                          if(mysqli_num_rows($result) > 0)  
                          {  
                               while($row = mysqli_fetch_array($result))  
                               {  
                                    echo '<tr><td>'.$row["video_title"].'</td></tr>';  
                               }  
                          }  
                          else  
                          {  
                               echo '<label>Data not Found</label>';  
                          }  
                     }  
                     ?>  
                     </table>  
                </div>  
          </div>  
      </body>  
 </html>  

警告:mysqli_real_escape_string() 期望参数 1 为 mysqli,资源在 D:\xampp\htdocs\advance_search.php 第 40 行中给出

警告:mysqli_query() 期望参数 1 为 mysqli,资源在 D:\xampp\htdocs\advance_search.php 第 44 行给出

警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,在第 45 行的 D:\xampp\htdocs\advance_search.php 中给出 null 未找到数据

这些错误是什么意思?

【问题讨论】:

  • 它一直有效,直到使用
  • oci_query 电话在哪里?
  • 我建议您使用PDO Oracle driver,那么您的代码更具前瞻性,并且您的代码库可以适用于多个数据库。如果 SQL 代码将是另一个问题。这是@ 987654322@手册页
  • 我没有看到一个..但它在 mysql db 上工作得很好......
  • Call to undefined function oci_query() 没有该代码就不会发生。您将不得不深入研究您的代码。

标签: php mysql oracle11g


【解决方案1】:

我也遇到了同样的错误,我改用这个方法连接

<?php   
$db = "(DESCRIPTION = 
    (ADDRESS = 
        (PROTOCOL = TCP)
        (HOST = [host])
        (PORT = [port])) 
    (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = [service_name])))";
    $conn = oci_connect([schema_name], [schema_password], $db);
    if (!$conn) {
    $m = oci_error();
    echo $m['message'], "\n";
   exit;
}
else 
    echo 'connected';?>

【讨论】:

  • 不复杂,直截了当,能看到你错过的东西,你永远不会出错
猜你喜欢
  • 2018-11-01
  • 2013-07-10
  • 2015-10-03
  • 1970-01-01
  • 2013-09-06
  • 2012-02-06
  • 2012-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多