Php 使用其他表中的数据从表中选择数据

Php 使用其他表中的数据从表中选择数据,php,mysql,Php,Mysql,我有两个表格,其中一个叫做公司,列有:标题、财务、地址、电话。。。。另一个叫做投资,有栏目:标题、预算 两个表中的标题值相同示例:google inc as title存储在两个表中 我所要做的就是使用title作为键将表investments中的数据显示到名为companys profile的页面 公司简介页面根据我从另一个显示所有公司的页面获得的id显示数据 我使用以下代码: <?php $var1 = "SELECT title FROM comp

我有两个表格,其中一个叫做公司,列有:标题、财务、地址、电话。。。。另一个叫做投资,有栏目:标题、预算

两个表中的标题值相同示例:google inc as title存储在两个表中

我所要做的就是使用title作为键将表investments中的数据显示到名为companys profile的页面

公司简介页面根据我从另一个显示所有公司的页面获得的id显示数据

我使用以下代码:

<?php

    $var1 = "SELECT title 
            FROM companies 
            WHERE idcompanies='$ID'";

    $result2 = mysqli_query($conn, "SELECT budget 
                                    FROM n4399 
                                    WHERE title='{$var1}'") 
                or die(mysqli_error($conn));

    $row2   = mysqli_fetch_array($result2);
    echo $row2['budget'];

?>
$conn已声明,数据库连接正常

我得到:

您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以了解第1行“2”附近要使用的正确语法

2是用户选择的id
使用xamp,您可以使用单个查询

SELECT budget 
FROM companies 
INNER JOIN n4399 ON companies.Title=n4399.title
WHERE companies.id = ?
并使用适当的准备好的声明和约束

$stmt = $conn->prepare("SELECT budget 
        FROM companies 
        INNER JOIN n4399 ON companies.Title=n4399.title
        WHERE companies.id = ?");
$stmt->bind_param("i", $ID);
$stmt->execute();

// 
$result = $stmt->get_result();
while($row = $result->fetch_assoc()) {
  echo $row['budget'];
}

您可以使用单个查询

SELECT budget 
FROM companies 
INNER JOIN n4399 ON companies.Title=n4399.title
WHERE companies.id = ?
并使用适当的准备好的声明和约束

$stmt = $conn->prepare("SELECT budget 
        FROM companies 
        INNER JOIN n4399 ON companies.Title=n4399.title
        WHERE companies.id = ?");
$stmt->bind_param("i", $ID);
$stmt->execute();

// 
$result = $stmt->get_result();
while($row = $result->fetch_assoc()) {
  echo $row['budget'];
}

您正在尝试执行以下sql语句:

SELECT budget 
  FROM n4399 
 WHERE title='SELECT title 
        FROM companies 
        WHERE idcompanies='$ID''
两个选项中的一个:或者您首先执行第一句话从公司中选择标题。。。获取公司的有效名称,或者您可以将您的选择更改为:

SELECT budget 
  FROM n4399 
 WHERE title in (SELECT title 
        FROM companies 
        WHERE idcompanies='$ID')

因此,此选择可以返回第二个选择中具有匹配标题的所有值

您正在尝试执行以下sql语句:

SELECT budget 
  FROM n4399 
 WHERE title='SELECT title 
        FROM companies 
        WHERE idcompanies='$ID''
两个选项中的一个:或者您首先执行第一句话从公司中选择标题。。。获取公司的有效名称,或者您可以将您的选择更改为:

SELECT budget 
  FROM n4399 
 WHERE title in (SELECT title 
        FROM companies 
        WHERE idcompanies='$ID')


因此,此选择可以返回第二个选择中具有匹配标题的所有值

请提供您的sql,我可能可以帮助您尚未执行第一个查询…@Nick its被用作子查询:@RiggsFolly it需要包含在中,而不是在这种情况下…@Nick YUP,请提供您的sql,我可能可以帮助您,您还没有执行第一个查询…@Nick它被用作子查询:@RiggsFolly它需要包含在中,而不是在那种情况下…@Nick YUP,请告诉我如果您要更改这么多,您可能还需要显示准备和执行的代码,否则OP可能会有点迷失,忽略这个答案如果你要做那么多的更改,你可能也会想展示prepare和execute的代码,否则,OP可能会丢失一些信息,忽略此答案。您是否尝试删除$ID并输入准确值?输入准确值会根据用户选择的ID获取数据,从而停止自动填充页面。我想我到目前为止试过的方法都不管用,因为我试着读字符串。我试图通过向我的表中添加外键来实现它。@ThLiou,我并不是说你应该永远使用这个精确的值,目的是用一个精确的值替换这个$ID,看看会发生什么。如果除了返回相同的值之外,其他一切都正常,那么无论用户输入什么,问题就出在变量中。如果您在进行更改后仍出现错误,那么错误就在其他地方。您是否尝试删除$ID并输入准确值?输入准确值会根据用户选择的ID获取数据,从而停止自动填充页面。我想我到目前为止试过的方法都不管用,因为我试着读字符串。我试图通过向我的表中添加外键来实现它。@ThLiou,我并不是说你应该永远使用这个精确的值,目的是用一个精确的值替换这个$ID,看看会发生什么。如果除了返回相同的值之外,其他一切都正常,那么无论用户输入什么,问题就出在变量中。如果您在进行更改的情况下仍遇到错误,那么错误就在其他地方