php процедурная подготовка с ассоциативным массивом - PullRequest
1 голос
/ 15 марта 2019

Мне нужно использовать оператор prepare, чтобы получить массив результатов, и мой опыт до сих пор полностью процедурный. Вот код, где мне нужна рука:

Перед этим у меня есть оператор require с подключением, установленным для БД, и с помощью метода $ _POST из формы я получаю значение двух переменных: $ town и $ type.

$stmt = mysqli_smt_init($conn);
if (mysqli_stmt_prepare($stmt, "SELECT town, type, code FROM tab_01 WHERE town = ? AND type LIKE ?");
mysqli_stmt_bind_param($stmt, "ss", $town, $type);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
if (mysqli_num_rows($result) > 0) {
   while($row = mysqli_fetch_assoc($result)) {
      $townvalue[] = $row["town"];
      $typevalue[] = $row["type"];
   }
}
mysqli_stmt_close($stmt);

Конечно, он не запускается, так как в выражениях «если» и в выражениях «пока» мой синтаксис исходит из неподготовленных выражений, и он, безусловно, неверен.

Мне нужно отобразить строки результата (я имею в виду три столбца результата).

В неподготовленном утверждении я бы написал так:

$sql = "SELECT town, type, code FROM tab_01 WHERE town='$town' AND type LIKE '$type'";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
   while($row = mysqli_fetch_assoc($result)) {
      echo $row["town"];
      echo $row["type"];
      echo $row["code"];
   }
}
mysqli_free_result($result);
mysqli_close($conn);

Какой правильный синтаксис, чтобы получить то же самое подготовленным способом? Спасибо.

...