ホームページ > バックエンド開発 > PHPチュートリアル > 複数テーブルのクエリで発生する問題

複数テーブルのクエリで発生する問題

WBOY
リリース: 2016-06-23 13:44:04
オリジナル
846 人が閲覧しました

要件を実現するには: ハードウェア デバイスを通じてサーバーにリクエストを送信します。
リクエストには 3 つのパラメーターが必要です:
1. ユーザー コード
2. 経度
3. 緯度


サーバーの操作:
1 に進みます。緯度と経度による Baidu 地図上の特定の地理的住所を取得します
2. ユーザー コードを通じて複数テーブル クエリを実行します。ユーザーの携帯電話番号を取得します。
3. SMS ゲートウェイを使用して、取得したアドレスをクエリされた携帯電話に送信します
4. SMS ゲートウェイがメッセージを正常に返すと、関連するデータが mysql に保存されます



ここで問題は、マルチテーブルであることですクエリでは携帯電話番号は返されません。しかし、それは操作パネルにあります。何が問題ですか

フローチャート:


PHP コード:

<?php    include_once "config.php";    header("Content-type: text/html; charset=utf8");    $mysql=mysqli_connect($db_host,$db_user,$db_password,$db_name);    mysql_select_db($db_name,$mysql);    mysql_query("SET NAMES 'utf8'");    mysql_query("set character_set_client='utf8'");    mysql_query("set character_results='utf8'");    mysql_query("set collation_connection='utf8'");	$user=$_GET['user'];	$lat=$_GET['lat'];    $lng=$_GET['lng'];    //获取地理地址    date_default_timezone_set('PRC');    $into_time=Date("Y-m-d H:i:s");    $url="http://api.map.baidu.com/geocoder/v2/?ak=E6f2d2e9e662917d0e6eee74ced3db24&callback=renderReverse&location=".$lat.",".$lng."&output=json&pois=1";    $json=file_get_contents($url);    $xjson = substr($json,29,-1);    $point = $lat.'_'.$lng;    $data=json_decode($xjson,true);    $dress = $data['result']['formatted_address'];    file_put_contents("localjson.txt",$data.'--dress--'.$dress);//    $g="select akw_user.mobile from akw_user where akw_user.id in (select user_group.userid from user_group where user_group.sqlid='".$user."')";    //多表查询    $g="select akw_user.mobile from akw_user where akw_user.id in (select user_group.userid from user_group where user_group.sqlid = '".$user."')";    $ids= mysql_query($g);    $n=@mysql_fetch_assoc($ids);    $f=$n['id'];    echo '--f--'.$f.'--g--'.$g;?>
ログイン後にコピー


ディスカッションに返信 (解決策)

助けてください

どのような問題が発生したか理解できません

わかりませんどのような問題が発生したか理解してください


つまり、複数のテーブルをクエリするときに、クエリ結果が取得されませんでした

複数のテーブルのクエリが表示されませんでした
まず、サブクエリ select user_group.userid from user_group where user_group.sqlid = ' を確認します。 ".$user."')
結果があるかどうか

この質問では、まずクエリ ステートメントに結果があるかどうかを確認します。 。 。

マルチテーブルクエリが表示されませんでした
まず、サブクエリ select user_group.userid from user_group where user_group.sqlid = '".$user."') を見てください

これは何か結果がありますか?結果が出ています。 。
図に示すように、私のオリジナルの SQL ステートメントも実行でき、結果を操作パネルでクエリできます。
ただし、php で実行すると、数値はクエリされません。 MySQL には、図に示すように 4 つの一般的なテーブルがあります。


データがクエリされないのは、この問題のせいですか?

プログラムのデバッグ方法がわからないようです

$ids= mysql_query($g);
$ids= mysql_query($g) または die( $g .'
' . mysql_error に変更してください());

プログラムのデバッグ方法がわからないようです

$ids= mysql_query($g);
$ids= mysql_query($g .'< br>' . mysql_error());

3q、変更後、次のメッセージが表示されます: ユーザー 'root'@'localhost' (パスワードを使用: NO)

このメッセージは、データベースに接続していないことを意味します。 、またはデータベースへの接続に失敗しました

プログラムのデバッグ方法がわからないようです

$ids= mysql_query($g);
$ids= mysql_query($g) または die( $g . '
' .mysql_error());

前にアカウントとパスワードを呼び出しました はい、これが理由です

前に失敗しました

これを変更する方法

どのステップが間違っているかを確認してください


前に失敗しました

それを実行できるものがいくつかあります 接​​続され、データが返されました。コードはこれに似ていますが、なぜ接続できないのでしょうか?

$mysql=mysqli_connect($db_host,$db_user,$db_password,$db_name); に変更します。

$mysql=mysql_connect($db_host,$db_user, $db_password) );


$g="select akw_user.mobile from akw_user where akw_user.id in (select user_group.userid from user_group where user_group.sqlid = '".$user."')";    $ids= mysql_query($g);    $n=@mysql_fetch_assoc($ids);    $f=$n['id'];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

SQL クエリは mobile フィールドのみを取得しますが、$f=$n['id'] は非常に不合理なようです

$g="select akw_user.mobile from akw_user where akw_user.id in (select user_group.userid from user_group where user_group.sqlid = '".$user."')";    $ids= mysql_query($g);    $n=@mysql_fetch_assoc($ids);    $f=$n['id'];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

SQL クエリは mobile フィールドのみを取得しますが、$f=$n['id'] は非常に不合理なようですが、select なしでフィールドを取得することはできません

ご指摘ありがとうございます。項目を追加しました:
  $ids= mysql_query($g,$mysql) or die( $g .'<br>' . mysql_error());
ログイン後にコピー


$g="select akw_user.mobile from akw_user where akw_user.id in (select user_group.userid from user_group where user_group.sqlid = '".$user."')";    $ids= mysql_query($g);    $n=@mysql_fetch_assoc($ids);    $f=$n['id'];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

SQL クエリは mobile フィールドのみを取得しますが、$f=$n['id'] は選択なしでフィールドを取得するのは非常に不合理なようです。それを追加すると、次のエラーが表示されます:
select akw_user.mobile from akw_user where akw_user.id in (select user_group.userid from user_group where user_group.sqlid = '1409203388')Access denied for user 'root'@'localhost' (using password: NO)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー


めまいがするので、SQL ステートメントを変更して ID フィールドへの参照を追加してください



$g="select akw_user.mobile from akw_user where akw_user.id in (select user_group.userid from user_group where user_group.sqlid = '".$user."')";    $ids= mysql_query($g);    $n=@mysql_fetch_assoc($ids);    $f=$n['id'];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー


SQL クエリのみmobile フィールドを取得しますが、$f=$n['id'] は非常に不合理なようです。select なしではフィールドを取得できません。
select akw_user.mobile from akw_user where akw_user.id in (select user_group.userid from user_group where user_group.sqlid = '1409203388')Access denied for user 'root'@'localhost' (using password: NO)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

$g="select akw_user.mobile,akw_user.id from akw_user where akw_user.id in (select user_group.userid from user_group where user_group.sqlid = '".$user."')";    $ids= mysql_query($g);    $n=@mysql_fetch_assoc($ids);    $f=$n['id'];
ログイン後にコピー

というエラー メッセージが表示されます。代わりにこれを。

晕死,我是让你修改SQL语句,增加对id字段引用



$g="select akw_user.mobile from akw_user where akw_user.id in (select user_group.userid from user_group where user_group.sqlid = '".$user."')";    $ids= mysql_query($g);    $n=@mysql_fetch_assoc($ids);    $f=$n['id'];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー


你的SQL查询里面仅仅获取了mobile 字段,但是你$f=$n['id'],貌似很不合理啊,获取一个没有select的字段,臣妾做不到啊


新增后提示出错:
select akw_user.mobile from akw_user where akw_user.id in (select user_group.userid from user_group where user_group.sqlid = '1409203388')Access denied for user 'root'@'localhost' (using password: NO)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー



那个我改为mobile了,现在的情况是
Access denied for user 'root'@'localhost' (using password: NO)
ログイン後にコピー

我的#15 就被你忽视了

mysql iiiiiii_connect
mysql_query
说来惭愧一直用框架,加了i的能通用吗

我的#15 就被你忽视了


没有呢,我按你的建议修改了,还是不行哦,同一个做php的朋友,他说是帐号密码对不上。我就纳闷了,比如我前面有好几个返回json的都是使用这个帐号和密码,以正常返回json,为什么多表查询时就会出现这个情况

把你修改后的代码贴出来看看。

把你修改后的代码贴出来看看。

ログイン後にコピー

mysql iiiiiii_connect
mysql_query
说来惭愧一直用框架,加了i的能通用吗


  $mysql=mysqli_connect($db_host,$db_user,$db_password);
ログイン後にコピー
ログイン後にコピー

现在这个就是有i的阿


mysql iiiiiii_connect
mysql_query
说来惭愧一直用框架,加了i的能通用吗


  $mysql=mysqli_connect($db_host,$db_user,$db_password);
ログイン後にコピー
ログイン後にコピー

现在这个就是有i的阿


谢谢,是这个错了,应该是
mysql_query
ログイン後にコピー

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート