pdo准备了与运营商的声明

时间:2017-06-06 00:49:07

标签: php mysql pdo prepared-statement

pdo中是否可以使用+ - *或/?

之类的运算符进行查询

解决方案是在两者之间放置空格?和运营商 这不起作用

$table01.Amount - ?*?

这有效

$table01.Amount - ? * ?

查询

UPDATE account SET account.Amount = account.Amount - 1000000*0.03 WHERE account.Id = 23;

抛出错误但将此查询放入数据库客户端没有错误

$sqlAccountUpdate="UPDATE $table01
                SET 
                $table01.Amount = $table01.Amount - ?*?
                WHERE
                $table01.Id = ?;";
try 
{
$stmtAccountUpdate = $pdo->prepare($sqlAccountUpdate);
$stmtAccountUpdate->execute([$_POST['new_account_initial_deposit'], $deposit_fee, $accountid]);
}
catch(Exception $e) 
{
echo 'Exception -> ';
var_dump($e->getMessage());
}

我得到的错误是由此引起的 这是给出错误的行:

$table01.Amount - ?*?

我知道我可以通过计算预准备语句之前的值并使用1变量而不是在预准备语句中进行计算来解决它。

这是有效的

$initalFee=$_POST['new_account_initial_deposit']*$deposit_fee;
$sqlAccountUpdate="UPDATE $table01
                SET 
                $table01.Amount = $table01.Amount - ?
                WHERE
                $table01.Id = ?;";
try 
{
$stmtAccountUpdate = $pdo->prepare($sqlAccountUpdate);
$stmtAccountUpdate->execute([$initalFee, $accountid]);
}
catch(Exception $e) 
{
echo 'Exception -> ';
var_dump($e->getMessage());
}

0 个答案:

没有答案