una tabla para mostrar insertar guardar formulario ejemplos desde datos con como codigo php mysql mysqli prepared-statement

tabla - insertar datos php y mysql ejemplos



SELECCIONE*desde la tabla de SQL utilizando una declaraciĆ³n preparada (3)

No sé si a alguien le interesaría la respuesta adecuada para esta pregunta ya respondida y aceptada, pero qué diablos.

Para responder a su pregunta utilizando mysqli, debe usar get_result ().

Entonces, la solución adecuada basada en mysqli será

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); $mysqli = mysqli_connect($host, $username, $password, $db); $query = "SELECT * from `wp_posts` WHERE ID=? "; $stmt = $mysqli->prepare($query); $stmt->bind_param("i", $pid); $stmt->execute(); $res = $stmt->get_result(); $data = $res->fetch_all();

y luego puede usar $ data en el ciclo foreach para la salida como se mostró en la otra respuesta.

Mientras que para PDO el código correcto sería el siguiente, y de hecho es más ligero.

$link = new PDO("mysql:host=$host;dbname=$db", $username, $password); $link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $link->prepare("SELECT * from `wp_posts` WHERE ID=?"); $stmt->execute([$pid]);

y luego puede usar $ stmt en el ciclo foreach para la salida como se mostró en la otra respuesta.

Estoy usando una declaración preparada para SELECT * desde una tabla MySQL y no estoy seguro de cómo usar while($row = mysqli_fetch_array($stmt)) para recorrer y seleccionar elementos de la matriz de resultados. Este es mi código, ¿qué estoy haciendo mal?

$link = mysqli_connect($host, $username, $password, $db); $query = "SELECT * from `wp_posts` WHERE ID=? "; //$result = mysqli_query($link, $query); $stmt = mysqli_prepare($link, $query); if($stmt){ mysqli_stmt_bind_param($stmt, "i", $pid); mysqli_stmt_bind_result($stmt, $dbpid); mysqli_stmt_execute($stmt); mysqli_stmt_fetch($stmt); } while($row = mysqli_fetch_array($stmt)){ ?> <h2 align="center"> <?php echo $row[''post_title'']; ?> </h2><br> <div class="paracenter"> <p id="cont"><?php echo $row[''post_content'']; ?></p> <hr color="black" width="10%"> </div> <?php } ?>


No utiliza bind_result() con fetch_array() . O bien realiza llamadas repetidas a fetch() para leer las columnas en las variables individuales enlazadas con bind_result() O no usa bind_result() , llama a mysqli_smt_get_result() para obtener los resultados en un objeto mysqli_result , y realiza llamadas repetidas a mysqli_fetch_array() para cargar la fila en su array $row .

Como está utilizando SELECT * , el enfoque de resultado independiente sería más lógico. Para tu código:

$link = mysqli_connect($host, $username, $password, $db); $query = "SELECT * FROM wp_posts WHERE ID = ? "; $stmt = mysqli_prepare($link, $query) or die("Unable to prepare statement: " . $link->error); mysqli_stmt_bind_param($stmt, "i", $pid); mysqli_stmt_execute($stmt) or die("Unable to execute query: " . $stmt->error); $rslt = mysqli_stmt_get_result($stmt); while($row = mysqli_fetch_array($rslt)) { ?> <h2 align="center"> <?php echo $row[''post_title'']; ?> </h2><br> <div class="paracenter"> <p id="cont"><?php echo $row[''post_content'']; ?></p> <hr color="black" width="10%"> </div> <?php } ?>

Solo a modo de comparación, así es como usaría bind_result() (y también cómo usar la sintaxis del objeto):

$link = new mysqli($host, $username, $password, $db); $query = "SELECT post_title, post_content FROM wp_posts WHERE ID = ? "; $stmt = $link->prepare($query); or die("Unable to prepare statement: " . $link->error); $stmt->bind_param("i", $pid); $stmt->execute() or die("Unable to execute query: " . $stmt->error); $stmt->bind_result($postTitle, $postContent) or die("Unable to bind result: " . $stmt->error); while($stmt->fetch()){ ?> <h2 align="center"> <?php echo $postTitle; ?> </h2><br> <div class="paracenter"> <p id="cont"><?php echo $postContent; ?></p> <hr color="black" width="10%"> </div> <?php } ?>

Tenga en cuenta que al usar bind_result() los valores de resultado se devuelven como escalares individuales en lugar de en una matriz, y que debe vincular las variables de resultado a las columnas en orden, por lo que debe saber qué columnas hay en el resultado.

Espero que ayude.


No hay nada malo con la respuesta de Darwin, pero quería señalar PDO como una alternativa con una sintaxis mucho más ligera:

<?php $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; $link = new PDO("mysql:host=$host;dbname=$db", $username, $password, $options); $stmt = $link->prepare("SELECT * from `wp_posts` WHERE ID=?"); $stmt->execute([$pid]); $result = $stmt->fetchAll(); // Now you have a plain array to work with, database work is over foreach ($result as $row): ?> <h2 style="text-align:center;margin:0 auto"> <?=$row["post_title"]?> </h2> <br/> <div class="paracenter"> <p id="cont"> <?=$row["post_content"]?> </p> <hr style="color:black;width:10%"/> </div> <?php endforeach;?>

No es necesario ningún enlace, y personalmente me resulta mucho más fácil trabajar con él.