0

以前に質問をしましたMYSQLLIKEを使用して異なる列を持つ複数のテーブルを検索する

私は助けを得ることができませんでした:それで私は妥協しています。現在、ある人が検索を行い、それが複数のテーブルで見つかった場合、私が望む順序でそれらを検索しません。最初にコネクタテーブル、次にアダプタテーブル、次にコンポーネントテーブルから結果を取得したいと思います。コネクタで結果が見つかった場合は、アダプタやコンポーネントを検索せずに、続行してください。

また、コンポーネント、アダプター、コネクターの場合は、elseを使用せずにこの順序で並べてみました。しかし、それはうまくいきませんでした。

if(isset($_GET['num'])) {
$num = $_GET['num'];
$numresult = mysql_query("SELECT * FROM productnumber WHERE part_num LIKE '%$num%'");

  if ($numresult) {

    while ($row = mysql_fetch_array($numresult)) {

        if ($row["title"] == "connectors") {
            $numtitle = "connectors";
            $result = mysql_query("SELECT * FROM connectors WHERE part_num LIKE '%$num%'");
        } else if ($row["title"] == "adapters") {
            $numtitle = "adapters";
            $result = mysql_query("SELECT * FROM adapters WHERE part_num LIKE '%$num%'");
        } else if ($row["title"] == "components") {
            $numtitle = "components";
            $result = mysql_query("SELECT * FROM components WHERE part_num LIKE '%$num%'");
        }   

    }
  }
}
4

1 に答える 1

1

これはmysql_*メソッドを使用するコードです。このコードは、何も見つからない場合はコネクタを検索し、次にアダプタを検索します。しかし、あなたが要求したように、コネクタに何かが見つかった場合、アダプタまたはコンポーネントをチェックインしません!

<?php
if(isset($_GET['num'])) {
$num = $_GET['num'];
    // We will first search for connectors
    $result = mysql_query("SELECT * FROM connectors WHERE part_num LIKE %'$num'%");
    if(mysql_num_rows($result) == 0) {
    // Now if we don't find anything in connectors, we will search in adapters
    $result = mysql_query("SELECT * FROM adapters WHERE part_num LIKE %'$num%'%");
    if(mysql_num_rows($result) == 0 ){
    // And if we don't find anything in adapters, finally we will search in components
    $result = mysql_query("SELECT * FROM components WHERE part_num LIKE %'$num%'%"); 
    if(mysql_num_rows($result) == 0) {
        echo "We Found Nothing! :( "
    }
    }}
}
?>

そして、これは PDO に変換されたサンプル コード (あなたのコードのみ) です。しかし、あなたの質問に対する正しい答えではありません。

 <?php
    try {
        $conn = new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $qry = $conn->prepare('SELECT * FROM productnumber WHERE part_num LIKE %:part_num%');
        $qry->execute(array(':part_num'=>$_GET['num']));
        $row = $qry->fetch(PDO::FETCH_OBJ)
            switch ($row->title) {
                case 'connectors':
                $numtitle="connectors";
                $qry2=$conn->prepare('SELECT * FROM connectors WHERE part_num LIKE %:num%');
                $qry2->execute(array(':num'=>$_GET['num'])));
                break;
                case 'adapters':
                $numtitle="adapters";
                $qry2=$conn->prepare('SELECT * FROM adapters WHERE part_num LIKE %:num%');
                $qry2->execute(array(':num'=>$_GET['num'])));
                break;
                case 'components':
                $numtitle="components";
                $qry2=$conn->prepare('SELECT * FROM components WHERE part_num LIKE %:num%');
                $qry2->execute(array(':num'=>$_GET['num'])));
                break;
            }
    } catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
    }
    ?>
于 2012-09-07T06:53:25.160 に答える