我有以下Mysql查询:
$sql = "select r.brand AS brand, r.name AS name, r.cost AS cost, e.price AS price, d.shipping as shipping
FROM tab.rawproduct r
INNER JOIN price e ON r.housecode=e.housecode
INNER JOIN product d ON e.productid=d.productid
WHERE r.housecode='$housecode'";
将houscode分配给一个变量,然后传递给sql语句:
<label>Housecode:</label><input class="boxes" type="text" name="housecode" value="<?php echo $housecode; ?>"><br />
$housecode = $_POST['housecode'];
Housecode通过表单提交,操作设置为$ _SERVER [PHP_SELF]
我正在尝试使用以下内容迭代结果:
$result = $con->query($sql);
if ($result->num_rows >0) {
while($row = mysqli_fetch_array($result)) {
$brand = $row['brand'];
$housecode = $row['housecode'];
$name = $row['name'];
$cost = $row['cost'];
$salesprice = $row['price'];
$shipraw = $row['shipping'];
}
} else {
echo "0 Results";
}
$con->close();
当用户提交住宅代码并且&#34; 0结果&#34;是回应。
我已经研究过这个问题并阅读Lucas Knuth's post:
如果结果的两列或多列具有相同的字段名称,则 最后一列优先。访问的其他列 同名,您必须使用列的数字索引或制作一个 列的别名。对于别名列,您无法访问 具有原始列名称的内容。所以,你可以使用AS 在您的SQL查询中为doubled行设置其他名称或使用 编号索引来访问它们。
所以我在上面的查询中使用了AS关键字,但我仍然没有得到任何结果。我也尝试过更改为mysqli_fetch_row($ result)并尝试分配$ row [0],1 ...等。再没有运气。
当我运行Apache error_log时,我得到以下内容:
试图在第34行获得非对象的属性。在第34和35行,我有:
if ($result->num_rows >0) {
while($row = mysqli_fetch_array($result)) {
非常感谢任何帮助。
干杯
答案 0 :(得分:0)
我复制了您的示例,但我在您的选择查询中发现了一个错误:您错过了r.housecode
。
$sql = "select r.brand AS brand, r.name AS name, r.cost AS cost, e.price AS price, d.shipping as shipping, r.housecode AS housecode
FROM tab.rawproduct r
INNER JOIN price e ON r.housecode=e.housecode
INNER JOIN product d ON e.productid=d.productid
WHERE r.housecode='$housecode'";
检查表中的交叉引用是否匹配,因为在我的示例中正确返回了行
表price
:
housecode productid price
HT0008 4 3400
HT0008 5 5400
表product
:
shipping productid
64 4
78 5
表rawproduct
:
brand name cost housecode
Cani bellaaa 63824 HT0008
答案 1 :(得分:0)
我已经找到了自己的答案。
问题在于我只选择了一个数据库,即tab.rawproduct BUT表价格e和procduct d来自完全不同的数据库。
所以sql查询应该是这样的:
$sql = "SELECT r.brand, r.name, r.cost, e.price, d.shipping FROM
tab.rawproduct r
INNER JOIN t1.price e on r.housecode=e.housecode
INNER JOIN t1.product d on e.productid=d.productid
WHERE r.housecode = '$housecode' ";
如果通过检查mysqli-&gt; errno:
找到错误if(!$result = $mysqli->query($sql)) {
echo "Error: Our query failed to execute and here is why: \n";
echo "Query: " . $sql . "\n";
echo "Errno: " . $mysqli->errno . "\n";
echo "Error: " . $mysqli->error . "\n";
exit;
}
希望这可以帮助其他人面对同样的问题。
感谢您的所有意见和帮助。