Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql-使用内部联接错误从2个表中选择列_Php_Mysql_Sql - Fatal编程技术网

Php Mysql-使用内部联接错误从2个表中选择列

Php Mysql-使用内部联接错误从2个表中选择列,php,mysql,sql,Php,Mysql,Sql,这应该是一个基本的问题,但我已经很长时间没有使用Mysql了,忘记了所有基本的东西。所以程序员们请容忍我 我有两张这样的桌子: 表1事件: 表2用户: 我想在events表中选择events_invites包含用户名的所有行。我可以通过以下方式完成此操作: SELECT * FROM meetmeup_events WHERE event_invitees LIKE '%$username%' 现在,我还想从名为user_userphoto的users表列中选择事件受邀者的照片。我的尝试是这样

这应该是一个基本的问题,但我已经很长时间没有使用Mysql了,忘记了所有基本的东西。所以程序员们请容忍我

我有两张这样的桌子:

表1事件:

表2用户:

我想在events表中选择events_invites包含用户名的所有行。我可以通过以下方式完成此操作:

SELECT * FROM meetmeup_events WHERE event_invitees LIKE '%$username%'
现在,我还想从名为user_userphoto的users表列中选择事件受邀者的照片。我的尝试是这样的:

$result = mysql_query("SELECT meetmeup_events.*, meetmeup_user.user_photo 
                       FROM meetmeup_events 
                       WHERE event_invitees LIKE '%$username%' 
                       INNER JOIN meetmeup_user 
                          ON meetmeup_user.user_username = meetmeup_events.event_inviter");

$rows = array();
   while($r = mysql_fetch_assoc($result)) {
     $rows['meetmeup_user'][] = $r;
   }

 echo json_encode($rows);
这给了我一个错误:mysql\u fetch\u assoc:提供的参数不是有效的mysql结果资源

我该怎么做?我错过了什么?你能给我举几个例子吗


提前谢谢!我一定会接受有效的答案

这只是按照正确的顺序对查询进行编码的问题,您可能希望通过对表名使用别名使其更易于管理

试试这个:-

SELECT me.*, 
       mu.user_photo 
FROM meetmeup_events me
   INNER JOIN meetmeup_user mu ON mu.user_username = me.event_inviter
WHERE me.event_invitees LIKE '%$username%' 
当然,这假设所有列名都是正确的,并且mu.user\u username=me.event\u inviter实际上是有意义的,因为这些字段实际上是相等的

补充建议 实际上,您并没有发出由mysql执行的查询

你必须这样做:-

$sql = "SELECT me.*, 
           mu.user_photo 
        FROM meetmeup_events me
           INNER JOIN meetmeup_user mu ON mu.user_username = me.event_inviter
        WHERE me.event_invitees LIKE '%$username%'";

$result = mysql_query($sql);

$rows = array('mysql_count' => mysql_num_rows($result) );

while($r = mysql_fetch_assoc($result)) {
    $rows['meetmeup_user'][] = $r;
}

echo json_encode($rows);

现在,在浏览器中使用javascript调试器查看返回的数据。即使没有“meetmeup_user”数组,也至少应该有一个mysql_count字段,如果它为零,您知道使用您的条件它找不到任何内容。

您应该将mysql函数更改为mysqli/PDO,尽管问题似乎是查询itsef。应该是:

SELECT meetmeup_events.*, meetmeup_user.user_photo 
FROM meetmeup_events 
INNER JOIN meetmeup_user 
ON meetmeup_user.user_username = meetmeup_events.event_inviter
WHERE event_invitees LIKE '%$username%' 
结尾的WHERE子句


Sql fiddle演示:

您的查询语法有问题。WHERE子句必须位于FROM子句和所有联接之后。确保检查错误:如果$结果:1.错误;在mysql_查询调用之后。旁注:按照您所说的做,也可以看到@MichaelBerkowski。错误消失,但json为空。mysql查询中是否还有错误?如果JSON为空,则表示没有返回任何行。在MySQL客户机中测试查询,并将其与PHP应用程序代码分开,以确保可以让它返回结果。我没有看到它有任何其他的错误。通过完全删除WHERE子句进行调试,以使连接正常工作,然后使用已知的良好用户名进行测试。可能变量$username不包含预期值。谢谢您的回答。我试过你的代码,错误消失了。但是我仍然不明白为什么JSON返回空的?您能进一步帮助我吗?请参阅其他建议谢谢您的回答。错误消失了,但不知何故JSON返回为空。我错过了什么?