Pregunta

Tiene problemas de formatear mi código para ejecutar sin errores mediante sprintf () Al ejecutar el código me sale este error: Error de análisis: error de sintaxis, inesperado en T_VARIABLE / ubicación en la línea 16

 $query = sprintf('UPDATE `%s` SET `stock` = :amount WHERE `itemname` = '$q'', $tablename);

Por encima de la línea 16 es en mi código. Estoy asumiendo que se relaciona con la sintaxis.

Ahora estoy recibiendo el error siguiente:

Fatal error: Excepción no detectada 'PDOException' con el mensaje 'SQLSTATE [42000]: Error de sintaxis o acceso violación: 1.065 consultas estaba vacía' en /home/content/63/6563663/html/inventory/pg.php:19 Pila trace: # 0 /home/content/63/6563663/html/inventory/pg.php(19): PDOStatement-> execute () {# 1} principal tirado en / home / content / 63/6563663 / html / inventario / pg.php en la línea 19

Esta es toda mi bloque de código:

 <?php

 $u=$_GET["u"];

 if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form2")) {
 $amount = isset($_POST['amount']) ? $_POST['amount'] : null;
 if (null != $amount) {

 $user = 'username';
 $pass = 'password';
 $pdo = new PDO('mysql:localhost', $user, $pass);
 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 session_start();
 $tablename = $_SESSION['MM_Username'];
 $query = sprintf('UPDATE %s SET stock= :amount WHERE itemname= '.$u, $tablename);
 $stmt = $pdo->prepare($UpdateQuery);
 $stmt->bindParam('amount', $amount);
 $stmt->execute();
 }
 }

 ?>

Gracias, parece que mi error se ocupa de la ejecución DOP, no la propia consulta. Si alguien tiene alguna idea de que sería grande. Alan, he utilizado el método para las cotizaciones y también estoy ejecutando la consulta a través mysql_real_escape_string ().

No hay solución correcta

Otros consejos

No construir consultas SQL de variables. Uso bind variables.

http://bobby-tables.com/php.html

Prueba esto:

$query = sprintf('UPDATE% sSETstock= :amount WHEREitemname= '.$q, $tablename);

Es necesario poner un operador de concatenación entre cadenas y variables para combinarlos. También puede deshacerse de la '' después $q porque no está cambiando la cadena en absoluto.

Editar:

Creo que leí mal lo que está tratando de hacer. Tal vez puedas probar:

$query = sprintf("UPDATE% sSETstock= :amount WHEREitemname= '$q'", $tablename);

Al cambiar la cadena de PHP para estar dentro de las comillas dobles, que no es necesario para escapar de sus comillas simples, y $ q se ampliará a su valor.

Además, asegúrese de que ejecute $ q $ y nombre de tabla a través de la inyección mysql_real_escape_string() Prevenir SQL.

Al igual que:

$query = sprintf('UPDATE `%s` SET `stock` = :amount WHERE `itemname` = \'$q\'', $tablename);

o

$query = sprintf("UPDATE `%s` SET `stock` = :amount WHERE `itemname` = \'$q\'", $tablename);

No se puede tener 's sin escape en cadenas delimitadas por '. De cualquier "s sin escape en cadenas delimitadas por ". Para escapar de la cadena delimitadora que deberán estar precedidos de un carácter \.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top