page php mysql phpmyadmin

php - page - angular routing 404 on refresh



Incrementar el valor en el script PHP no funciona (2)

Tengo el siguiente script PHP para actualizar la blog view del blog view en mi base de datos,

<?php include(''header.php''); ?> <?php $article_id = $_POST[''article'']; // echo $article_id; $dbhost = ''localhost''; $dbuser = ''root''; $dbpass = ''password''; $con = mysql_connect($dbhost, $dbuser , $dbpass); $sql = ''SELECT id,blog_title, blog_body, views FROM tinyblog where id="''. $article_id .''" ''; // UPDATE VIEWS. mysql_query("UPDATE tinyblog SET views = views + 1 WHERE id = {$article_id}" , $con ); mysql_select_db(''tinyblog''); $retval = mysql_query( $sql, $con ); if(! $retval ) { die(''Could not get data: '' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { ?> <div class="article-blog-indiv"> <?php echo ''<h1>''. $row[''blog_title''] .''</h1>''; echo ''<p>''. $row[''blog_body''] .''</p>''; ?> </div> <?php } ?> <?php include(''footer.php''); ?>

Es la siguiente línea de código que realmente actualiza el campo de vistas en mi base de datos:

mysql_query("UPDATE tinyblog SET views = views + 1 WHERE id = {$article_id}" , $con );

Ahora, esta línea de código no parece funcionar, ya que cada vez que regreso y miro en phpmyadmin, veo que el campo de vistas sigue siendo 0 , pero cuando inserto la siguiente declaración directamente para probar mi mi phpmyadmin:

mysql_query("UPDATE tinyblog SET views = views + 1 WHERE id = 1);

Veo un incremento en el campo de vistas, ¿por qué está sucediendo esto?


Además de todos los comentarios que ya recibió sobre las funciones mysql_, las tablas bobby (que probablemente obtendrá pronto), etc., observe que elige su base de datos antes de ejecutar la consulta:

mysql_query("UPDATE tinyblog SET views = views + 1 WHERE id = {$article_id}" , $con ); mysql_select_db(''tinyblog'');

  1. Asegúrese de elegir el db inmediatamente después de su conexión.
  2. Agregue el manejo de errores a su código (para que pueda ver los errores si existen).

    mysql_query ("UPDATE tinyblog SET views = views + 1 WHERE id = {$ article_id}", $ con) o die (mysql_error ($ con));


Algunas cosas que necesitan ser arregladas. primero está usando mysql cuando debería usar mysqli o PDO. En segundo lugar, está utilizando datos de publicaciones sin escaparse en absoluto. En tercer lugar, no necesita esta selección y actualización. Puedes hacerlo en una sola declaración.

$query = "UPDATE tinyblog SET views = views + 1 WHERE id = (SELECT id FROM tinyblog where id=:article)" $db = new PDO(''mysql:host=localhost;dbname=mydb'', ''username'', ''password''); $stmt = $db->prepare($query); $stmt->execute(array(":article"=>$article_id));

Lo que estamos haciendo aquí es crear una declaración preparada con un marcador de posición. Lo hemos nombrado como :article pero podría haber sido dejado como ? en lugar.

Luego, cuando se ejecuta la consulta, debe completar los bits que faltan al pasar los parámetros. Eso es lo que estamos haciendo en el último paso con array(":article"=>$article_id)

Dado que es un parámetro con nombre, usamos una matriz asociativa. Alternativamente, podría haber ejecutado ejecutar sin ningún parámetro si hubiera llamado primero a bindParam .