0

对于单个表,我通常会执行以下操作:

$length = 42;
$result = mysql_query ('SELECT * FROM table WHERE length = "' . $length . '"', $dbconn);
$rowsfound = mysql_num_rows ($result);
if ($rowsfound == 1) {
    $row = mysql_fetch_array ($result);
    $tableid = $row ['table_id'];
    $tablecloth = $row ['tablecloth'];
    $height = $row ['height'];
    ...

但是如何从这样的连接表中获取行:

$chairid = 123;
$result = mysql_query ('SELECT * FROM table,chair WHERE chair.id = "' . $chairid . '" AND table.table_id = chair.table_id', $dbconn);
$rowsfound = mysql_num_rows ($result);
if ($rowsfound == 1) {
    $row = mysql_fetch_array ($result);
    $tableid = $row ['table.table_id'];
    $tablecloth = $row ['table.tablecloth'];
    $height = $row ['table.height'];
    ...

这不会返回 $table.tablecloth 中的任何值。我究竟做错了什么?

4

4 回答 4

1

用 JOIN 代替

    SELECT * FROM table
    INNER JOIN chair  ON table.table_id = chair.table_id 
    WHERE chair.id = "' . $chairid . '" 
于 2013-08-02T00:06:04.263 回答
1

您没有得到任何结果的原因是您的查询失败。 table是保留字,因此您需要在其周围添加反引号,如下所示:

$result = mysql_query ('SELECT * FROM `table`,`chair` WHERE `chair`.id = "' . $chairid . '" AND `table`.table_id = `chair`.table_id', $dbconn);

如果您有适当的错误处理,如下所示(请注意or die()

$result = mysql_query ('SELECT * FROM `table`,`chair` WHERE `chair`.id = "' . $chairid . '" AND `table`.table_id = `chair`.table_id', $dbconn) or die(mysql_error())

请参考此处的保留字列表:http: //dev.mysql.com/doc/refman/5.5/en/reserved-words.html

除此之外,正如 Kim 指出的那样,您还需要修复额外的右括号。

于 2013-08-02T00:09:50.073 回答
0

你最好做一个像 echo_Me 这样的正确 JOIN 建议,但这是你编码方式的正确语法。

$result = mysql_query ('SELECT table.*,chair.* FROM table,chair WHERE chair.id = "' . $chairid . '" AND table.table_id = chair.table_id', $dbconn);

然后

if ($rowsfound == 1) {
    $row = mysql_fetch_array ($result);
    $tableid    = $row ['table_id'];
    $tablecloth = $row ['tablecloth'];
    $height     = $row ['height'];

结果不会返回列名前面的表名。如果您在两个表中都有同名的列名,这可能会导致问题。

于 2013-08-02T00:07:31.880 回答
-1

我认为你有额外的右括号?)

$tableid = $row ['table.table_id']);
$tablecloth = $row ['table.tablecloth']);
$height = $row ['table.height']);
于 2013-08-02T00:07:42.047 回答