2

これが私が使用しているPHPコードです:

    $query="select * from `myTable` where `email`='$email' limit 0,1";
    if(empty($conn))
    {
        echo "not connected".PHP_EOL;
    } 

    $result = mysql_query($query,$conn);
    $row = mysql_fetch_array($result);      

    if(empty($row))
    {   
            ....

クエリがphpmyadminで実行されると、単一の行が選択されます。

ただし、phpでコードを実行すると、行は常に空になります。

同じことが、私が実行しようとした他のいくつかのクエリにも当てはまります。mysql_query常に失敗します。

何が間違っている可能性がありますか?

4

3 に答える 3

2

何が起こっているのかを確認するのに十分なコードがあるとは思いません。しかし、あなたが私たちに見せているものに基づいて、 $result を取得して $row に割り当てた後、 if ステートメントがあります

if(empty($row)) {...doing something secret...}

これは、(empty($row)) が false で実行されないため、何も起こらないと期待している行のようなものが返された場合を意味します。

于 2012-06-26T16:05:07.400 に答える
1

PDOを使用してこれを試してください:

<?php

$email = "example@example.com";

try {
    //Instantiate PDO connection
    $conn = new PDO("mysql:host=localhost;dbname=db_name", "user", "pass");
    //Make PDO errors to throw exceptions, which are easier to handle
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    //Make PDO to not emulate prepares, which adds to security
    $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

    $query = <<<MySQL
SELECT *
  FROM `myTable` 
  WHERE `email`=:email 
  LIMIT 0,1;
MySQL;

    //Prepare the statement
    $stmt = $conn->prepare($query);
    $stmt->bindParam(":email", $email, PDO::PARAM_STR);

    $stmt->execute();

    //Work with results
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        //Do stuff with $row
    }
}
catch (PDOException $e) {
    //Catch any PDOExceptions errors that were thrown during the operation
    die("An error has occurred in the database: " . $e->getMessage());
}

mysql_*関数の使用はお勧めできません。壊れたコードを生成する保証です。私があなたに与えたコメントのリンクから PDO または MySQLi を学び、代わりにそれらを使用してください。

于 2012-06-26T16:08:23.407 に答える
0

まず、$emailの値を確認します。定義する直前にエコーして、$queryそれがあなたが思っているものであることを確認してください。

すでにそれを行っている場合は、それが問題であることがわかります。代わりに、リンク ID$connが問題である可能性があります。リンク識別子を使用する代わりに、クエリの 2 番目のパラメーターを空のままにして、代わりにmysql_connect()スクリプトの先頭で実行してみてください。これは、99.5% の確率で物事を行うための最良の方法です。

参照: http://php.net/manual/en/function.mysql-connect.php

于 2012-06-26T16:01:30.243 に答える