#php #mysql #select #where
#php #mysql #выберите #где
Вопрос:
Кто-нибудь порадует меня приведенным ниже кодом, я неопытен в этой области, и мой класс в 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 amp;
//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;
}
Комментарии:
1. Хорошо, я добавил $stmt-> store-result(); как предложено ниже и упоминается в моих книгах, но я получаю «Фатальную ошибку: вызов функции-члена store_result() для не-объекта в строке 31».
Ответ №1:
Попробуйте сохранить результат после выполнения
$stmt->store_result();
Комментарии:
1. Спасибо, что подтвердили, что мне нужна эта строка кода. Я был в своей книге, но я пропустил это.
Ответ №2:
Используйте $stmt->store_result();
перед вызовом num_rows
.
Ответ №3:
В то время как другие обнаружили одну причину, по которой $numRows никогда не получит значение, отличное от 0, другой фрагмент кода, который был ошибочным и вызывал проблемы, был…
$ stmt = $stmt-> execute(); который должен был быть просто $stmt-> execute();
Должно быть, я перепутал его с другим кодом, который я написал откуда-то еще.
Спасибо за ответы, они действительно помогли.