У меня есть этот код, который, как я понимаю, уязвим, но у меня возникли проблемы с созданием из него безопасного подготовленного оператора. Любой, у кого есть какие-либо идеи о том, как получить массив записей элементов, хранящихся в переменной $userrecord, и количество строк, хранящихся в $rowsnumber, помогите мне. Я раньше не использовал подготовленные операторы MySQLi
/*This query returns member records in an array format*/
$querymember = "SELECT * FROM members WHERE phone='$providedphone' ";
$member = mysqli_query($conn,$querymember);
// Number of rows
$rowsnumber = $member->num_rows;
// User record (Entity)
$userrecords = $member->fetch_array(MYSQLI_NUM);
Что я пробовал
$stmt = $mysqli->prepare("SELECT * FROM members WHERE phone = ?");
$stmt->bind_param("s", $providedphone);
$stmt->execute();
// To get number of rows
$rowsnumber = $stmt->num_rows;
// To get user records
$userrecords = $stmt->get_result();
Просто принеси while ($row = $userrecords->fetch_array())....
Это неправильный дубликат - ОП правильно предотвращает инъекцию, просто не получает результатов.






$userrecords = $stmt->get_result(); преобразует объект mysqli::statement в объект mysqli::result, поэтому теперь все, что вам нужно сделать, это обработать набор результатов, как вы делали бы это раньше.
$stmt = $mysqli->prepare("SELECT * FROM members WHERE phone = ?");
$stmt->bind_param("s", $providedphone);
$stmt->execute();
//To get number of rows
$rowsnumber = $stmt->num_rows;
//To get user records
$result = $stmt->get_result();
$userrecords = $result->fetch_array(MYSQLI_NUM);
В качестве альтернативы вы можете использовать объект mysqli::statement, как он есть, привязав переменные PHP к именам столбцов, а затем выполнив mysqli::statement->fetch()
$stmt = $mysqli->prepare("SELECT * FROM members WHERE phone = ?");
$stmt->bind_param("s", $providedphone);
$stmt->execute();
// bind returned columns to PHP variables
// as I dont know what your column names are this is just an example
$stmt->bind_result($name, $code);
// this will fetch the columns into the PHP varibles
$stmt->fetch();
Альтернативно Существует руководство для изучения этого материала от