【发布时间】:2021-03-13 14:43:48
【问题描述】:
我正在尝试将一列数据(数字)复制到同一个表中的不同列 (VARCHAR)。似乎直接运行更新查询并将 varchar 列设置为 $_POST 列将是什么。问题是数字列将包含 5 个尾随零。我还需要将其重新格式化为副本中的 INT 类型。这是 PHP 中原始查询的副本:
try{
$q = "UPDATE table1 SET text1 = " . $_POST["htmlinputfield"] .
" WHERE account_id = :aid AND fieldapplication_id = :fid";
$stmt = $this->app->db->prepare($q);
$stmt->execute(array(":fid"=>$this->app->fid,":aid"=>$this->app->aid));
} catch(exception $e){
$this->app->logErroredQuery($e,$q);
return $e->getMessage();
}
我尝试在 if 语句中使用 php 更改数据类型,然后坚持查询。也无法让它工作。看起来是这样的:
$htmlfield = $_POST["htmlinputfield"];
if(is_numeric($htmlfield)){
(int)$htmlfield;
}else{
(string)$htmlfield;
}
try{
$q = "UPDATE table1 SET text1 = :htmlfield
WHERE account_id = :aid AND fieldapplication_id = :fid";
$stmt = $this->app->db->prepare($q);
$stmt->execute(array(":fid"=>$this->app->fid,
":aid"=>$this->app->aid,
":htmlfield"=>$htmlfield));
} catch(exception $e){
$this->app->logErroredQuery($e,$q);
return $e->getMessage();
}
这导致将所有结果更改为列的名称,而不是数据的副本。原始查询适用于除数字情况以外的所有情况。
我想这可能是 CAST 情况,但我的 SQL 能力不是很好。最终结果将是在 $_POST 中选择的任何数据库列都将被格式化为 int 或 varchar。任何帮助将不胜感激。
【问题讨论】:
-
为什么!!!连接新值并在其余查询中使用参数。 HINT 参数是正确的走法
-
有点困惑!你说你想将一列复制到另一列,那么
$_POST到底有什么关系 -
你是对的 Google
mysql cast然后你也可以阅读 MySQL 手册 -
$_POST 所做的是选择要复制的表中的列。