在PHP和MySQL中编写Select Where语句

时间:2014-06-19 17:48:30

标签: php mysql select where

有人会用下面的代码取悦我,我在这个领域缺乏经验,我的SQL课程是“很久以前在遥远的星系......”我知道连接字符串有效,因为我使用过它在这个应用程序的其他功能。除了我没有使用WHERE子句之外,我甚至使用下面的代码从另一个函数中的另一个表中检索*行。

首先,我能够使用函数在表中存储IP地址,并且运行良好。现在我想检查一下这个表中是否存在给定的一个。部分代码如下。

似乎总是返回0行。我已经将测试数据放入表中并对$ ipA进行了硬编码,但我仍然得到0行返回。请尽可能帮助,谢谢您的努力。

function checkDB($ipA) {    

    require_once('connection.inc.php');

    $resultAns = "";    

    //create db connection
    $conn = dbConnect();               

    //init prepared stmt
    $stmt = $conn->stmt_init();

    //Set sql query for ipAddress search
    //prepare the SQL query
    $sql = 'SELECT * FROM ipAddress WHERE ipA = ?'; 

    //submit the query and capture the result   
    if ($stmt->prepare($sql)) {                 
        $stmt->bind_param('s', $ipA);
        $stmt = $stmt->execute();

        //if qry triggers error affeted_rows value becomes -1  & 
        //php treats -1 as true; so test for greater than 0

        $numRows = $stmt->num_rows;     //not to sure about the syntax here
     } 


    // I want to know if the query brought back something or not, I don't what
    // to know exactly what, only that it found a match or did not find a match.
    // echos are for testing purposes to show me where I am landing.

    if ($numRows == 0) {
        echo '<script type="text/javascript">window.alert("numRows = 0")</script>';
        $resultAns = 0;
    } elseif ($numRows == 1) {
        echo '<script type="text/javascript">window.alert("numRows = 1")</script>';
        $resultAns = 1;
    }

    return $resultAns;

}

3 个答案:

答案 0 :(得分:0)

在致电$stmt->store_result();之前使用num_rows

答案 1 :(得分:0)

尝试执行

后存储结果
$stmt->store_result();

答案 2 :(得分:0)

虽然其他人抓住了一个原因,$ numRows永远不会收到0以外的值,但是另一段有缺陷且导致问题的代码是......

$ stmt = $ stmt-&gt; execute();本应该只是 $ stmt-&gt; execute();

我必须把它与我在其他地方写的其他代码混在一起。

感谢您的回答,他们确实提供了帮助。