SQL 内部查询未提供输出


SQL inner Query not giving output

/* 在$selected m 中,从 Java 代码中获取数据,这些数据成功地存储在 $selected 中。在查询中使用$selected,但在触发查询后无法获取任何数据。*/

     $selected = $_GET['selected'];
     $projects=mysql_query("select ProjectName from projects where LobID =
                ( select LobID from lob where LobName like     ".$selected.");");
 if (!$projects) {
     echo "Could not successfully run query ($projects) from DB: " .mysql_error();
    exit;
}
  /* Have included this query in my php page. All the table names are same.Lob       and projects are two different tables n LobID is primary key in Lob & Foreign key in projects. By executing the above query I am not able to fetch the data in $projects.Instead i am getting mesagecould not successfully run query. please help. */

查询应该是这样的

$projects=mysql_query("select ProjectName from projects where LobID =
                     (select LobID from lob where LobName like '$selected')");

".$selected.");更改为'$selected'

我认为应该是Jocker和Abdulla Nilam的答案的混合:

$projects=mysql_query("select ProjectName from projects  
where LobID = ( select LobID from lob 
where LobName like '%".$selected."%');");

或加入

$projects = mysql_query("SELECT ProjectName FROM projects
JOIN lob ON projects.LobID=lob.LobID
WHERE LobName LIKE '%" . $selected . "%');");

试试这个...如果您使用喜欢搜索 LobName 表示使用 %% 。它的重新运行可能匹配值 kike 单个字符

"select ProjectName from projects where LobID =
                ( select LobID from lob where LobName like '%$selected%');"
  • 您的$selected = $_GET['selected'];变量中包含什么类型的数据?
  • 子查询返回多少行记录?

如果子查询返回更多记录,则可以限制结果数:

<?php
  
  /**
    ...
  **/
  $selected = $_GET['selected'];
  $projects = mysql_query("SELECT ProjectName FROM projects WHERE (LobID = (
    SELECT LobID FROM lob WHERE LobName LIKE '%$selected%' LIMIT 1))");
?>

如果没有,您可以这样做:

<?php
      
      /**
        ...
      **/
      $selected = $_GET['selected'];
      $projects = mysql_query("SELECT ProjectName FROM projects WHERE (LobID IN (
        SELECT LobID FROM lob WHERE LobName LIKE '%$selected%'))");
    ?>