Pergunta

Tendo problemas de formatação meu código para executar, sem erros, utilizando sprintf() Quando eu executar o código recebo este erro:Erro de análise:erro de sintaxe, inesperado T_VARIABLE no local ou na linha 16

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

Acima é a linha 16 no meu código.Eu estou supondo que é sintaxe relacionados.

Agora estou recebendo o seguinte erro:

Erro Fatal:Exceção não identificada 'PDOException" com mensagem " SQLSTATE[42000]:Erro de sintaxe ou de violação de acesso:1065 Consulta estava vazio' em /home/content/63/6563663/html/inventário/pg.php:19 de rastreamento de Pilha:#0 /home/content/63/6563663/html/inventory/pg.php(19):PDOStatement->execute() #1 {principal} lançada em /home/content/63/6563663/html/inventory/pg.php na linha 19

Esse é todo o meu bloco 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();
 }
 }

 ?>

Obrigado, parece o meu erro é lidar com a DOP de execução, e não a própria consulta.Se alguém tem quaisquer idéias sobre o que seria ótimo.Alan, eu usei o método para as aspas e também estou executando a consulta através mysql_real_escape_string().

Nenhuma solução correta

Outras dicas

Por favor, não construir consultas SQL de variáveis.O uso de bind variables.

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

Tente isso:

$query = sprintf('UPDATE%sSETestoque= :amount WHEREnome do item= '.$q, $tablename);

Você precisa colocar um operador de concatenação entre strings e variáveis de combiná-los juntos.Você também pode se livrar do '' depois de $q porque ele não está mudando a seqüência de caracteres em tudo.

Editar:

Eu acredito que eu li errado o que você está tentando fazer.Tente isso:

$query = sprintf("UPDATE%sSETestoque= :amount WHEREnome do item= '$q'", $tablename);

Alterando as string PHP para estar dentro de aspas duplas, você não precisa escapar de seu aspas simples, e $q vai ser expandida para o seu valor.

Além disso, certifique-se de que você execute $q $tablename através de mysql_real_escape_string() para evitar a injeção de SQL.

Igual a:

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

ou

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

Você não pode ter inigualável 's em cordas delimitadas por '. Ou não -específico "s em cordas delimitadas por ". Para escapar do delimitador de cordas, você precisa prender um \ personagem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top