有人会用下面的代码取悦我,我在这个领域缺乏经验,我的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;
}
答案 0 :(得分:0)
在致电$stmt->store_result();
之前使用num_rows
。
答案 1 :(得分:0)
尝试执行
后存储结果$stmt->store_result();
答案 2 :(得分:0)
虽然其他人抓住了一个原因,$ numRows永远不会收到0以外的值,但是另一段有缺陷且导致问题的代码是......
$ stmt = $ stmt-&gt; execute();本应该只是 $ stmt-&gt; execute();
我必须把它与我在其他地方写的其他代码混在一起。
感谢您的回答,他们确实提供了帮助。