Php 使用其他表中的数据从表中选择数据
我有两个表格,其中一个叫做公司,列有:标题、财务、地址、电话。。。。另一个叫做投资,有栏目:标题、预算 两个表中的标题值相同示例:google inc as title存储在两个表中 我所要做的就是使用title作为键将表investments中的数据显示到名为companys profile的页面 公司简介页面根据我从另一个显示所有公司的页面获得的id显示数据 我使用以下代码:Php 使用其他表中的数据从表中选择数据,php,mysql,Php,Mysql,我有两个表格,其中一个叫做公司,列有:标题、财务、地址、电话。。。。另一个叫做投资,有栏目:标题、预算 两个表中的标题值相同示例:google inc as title存储在两个表中 我所要做的就是使用title作为键将表investments中的数据显示到名为companys profile的页面 公司简介页面根据我从另一个显示所有公司的页面获得的id显示数据 我使用以下代码: <?php $var1 = "SELECT title FROM comp
<?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,看看会发生什么。如果除了返回相同的值之外,其他一切都正常,那么无论用户输入什么,问题就出在变量中。如果您在进行更改的情况下仍遇到错误,那么错误就在其他地方