Mysql错误where子句中的未知列

时间:2015-02-28 17:57:59

标签: php mysql sql string

朋友们,我是php和数据库编程世界的新手。如果我使用正确的术语无法很好地沟通,我会向前道歉。

表1

Id  |  name  | lastName | age
===============================
1   | Jane   | Kot      | 20
2   | Ann    | Ama      | 17

表2

Id | lastName | bonus | sex
==============================
1  | kot      | 50%   | male
2  | Jack     | 20%   | male

我想加入table1.lastName = table2.lastName的两个表格。在上图中,我期待着“1 Jane 20(全部来自table1)1 50%男性(全部来自table2)返回。 但我会选择显示任何数据,超链接它以使用公共字段(lastName)显示另一页面中的整个记录​​

示例:单击时显示在page1.php中的Jane将在page2.php中显示合并记录。  简(现在在page1.php中超链接)---------点击了---------> 1简20 1 50%男性(显示在page2.php) 请帮我。我为我表达问题的糟糕方式道歉。感谢

PAGE1.PHP的代码

$sql = "SELECT * FROM table1, table2 WHERE table1.lastname = table_2.lastname";
$result = mysql_query ($sql);
while ($row = mysql_fetch_array($result)) { 
    echo '<table border="1">';
    echo '<tr>';
    echo '<td>'. $row['name'].'<br>'.'</td>';
    echo '<td><a href="page2.php? lastName=' . $row['lastName'] . '">VIEW DETAILS</a></td>';
    echo'</tr>';
    echo'</table>';
}
?>

PAGE2.PHP的代码

$lastName = mysql_real_escape_string($_GET['lastName']);
$sql =mysql_query ('SELECT name, age, bonus, sex FROM table_1 c join table_2 f on c.lastname = f.lastname where c.lastname  = $lastname ' )
or die(mysql_error());
$result = mysql_query($sql) or die(mysql_error()); 
$row = mysql_fetch_array($result);
while ($row) {
    // Echo page content
    echo $row['name'].'<br>';
    echo $row['age'];
    echo $row['sex'];
    echo $row['bonus'];
}
?>

当我点击page1.php中的“查看详细信息”时,出现此错误Unknown column '$lastname' in 'where clause'

1 个答案:

答案 0 :(得分:1)

您必须将$ lastname放在'中,因为数据库中此字段的类型是varchar或text。

z2.php

<?php

$lastName = mysql_real_escape_string($_GET['lastName']);

$sql = "SELECT name, age, bonus, sex FROM table_1 c join table_2 f on c.lastname = f.lastname where c.lastname  = '" .  $lastname . "'" ;

$result = mysql_query($sql); 

while ($row = mysql_fetch_array($result)) {
    // Echo page content
    echo $row['name'].'<br>';
    echo $row['age'];
    echo $row['sex'];
    echo $row['bonus'];
}

?>