while($ row = mysqli_fetch_array($ result)){当选择多个表时

时间:2012-08-26 19:18:01

标签: php mysql

我正在用PHP,javascript和mysql创建这个搜索功能。

此代码正常运行。我在一个html搜索框中输入一些数据,它将%关键字%发送到这个PHP函数,它返回我想要的数据。

$query = "SELECT id,fornavn,efternavn,adresse,postnr,city,tlf,kon,email,fodselsdag FROM kunde WHERE email LIKE '%$keyword%' OR fornavn LIKE '%$keyword%'";


$result = mysqli_query($dbc,$query);

if($result){
    if(mysqli_affected_rows($dbc)!=0){
      while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){
        listings($row['fornavn'],$row['efternavn'], $row['email'],$row['adresse'],$row['tlf'],$row['postnr'],$row['city'],$row['fodselsdag'],$row['id'],$bartype);
    }

我有另一个TABLE,其中上面的SQL中的id与另一个ID相关。该表如下所示:

Table name: vip
Colmns: id, brugerid, barid

现在我想在上面的代码中自定义SQL,因此它只选择在vip表中也有关系的数据。

我是这样做的:

SELECT *, kunde.id as kundeid FROM kunde,vip WHERE  vip.brugerid = kunde.id AND vip.barid =1 AND email LIKE '%$keyword%' OR fornavn LIKE '%$keyword%';

实际上每当我添加多个表时,php代码就会停止工作..任何想法为什么会发生这种情况?我怎么能做到这一点?

非常感谢任何帮助

3 个答案:

答案 0 :(得分:2)

http://dev.mysql.com/doc/refman/5.0/en/join.html

SELECT *, kunde.id as kundeid FROM kunde INNER JOIN vip ON (vip.brugerid = kunde.id) WHERE  kunde.id=1 AND email LIKE '%$keyword%' OR fornavn LIKE '%$keyword%'

答案 1 :(得分:0)

我在这里看到了不必要的逗号:FROM kunde,vip, WHERE

答案 2 :(得分:0)

另外,考虑在未来的开发中使用PDO,因为它是一个更加一致的访问数据库的接口,如mysql和mysql_query。