【问题标题】:MySQL query to select SUM of longtext data type and store result as variableMySQL 查询选择长文本数据类型的 SUM 并将结果存储为变量
【发布时间】:2015-06-03 21:11:21
【问题描述】:

我需要从具有“longtext”数据类型的表列中选择一些值,其中另一列具有特定值并将这些值相加。我需要将总和存储为一个变量,我将 a.) 在网页上回显,b.) 在页面稍后的计算中使用该值。

这可以找到我需要添加的所有值:

 $query = "SELECT meta_value 
 FROM wp_postmeta 
 WHERE meta_key = '_crowdfundingtotalprice' 
 ORDER BY CAST(`meta_value` AS UNSIGNED) DESC";

我可以显示结果:

$result = mysql_query($query) or die(mysql_error());
while($row=mysql_fetch_array($result)){
echo $row['meta_value']. "<br>";
}

从我的搜索中,我认为我的查询很接近,但是当我尝试回显结果时我的页面无法加载。以下是行不通的:

$query = "SELECT CAST(SUM('meta_value') as UNSIGNED) 
FROM wp_postmeta 
WHERE meta_key = '_crowdfundingtotalprice'";

$result = mysql_query($query) or die(mysql_error());
while($row=mysql_fetch_array($result)){
    echo $row[SUM('meta_value')]. "<br>";
}

您可能已经猜到,这是一个 Wordpress 数据库表,我无法更改数据类型。一如既往,感谢您的帮助!

编辑 - 尝试下面 Gordon Linoff 的建议,我删除了 meta_value 周围的单引号。还是不行,不过还是谢谢你的建议:

$query = "SELECT CAST(SUM(meta_value) as UNSIGNED) 
FROM wp_postmeta 
WHERE meta_key = '_crowdfundingtotalprice'";

$result = mysql_query($query) or die(mysql_error());
while($row=mysql_fetch_array($result)){
    echo $row[SUM(meta_value)]. "<br>";
}

【问题讨论】:

  • please, please 停止在每个手册页上使用 deprecated mysql 扩展 read the red warning box:扩展将在未来被删除,如果运行 PHP 5.5 及更高版本,则会发出E_DEPRECATED 通知。学会使用PDOmysqli_* 代替(i 代表改进,顺便说一句),并学会喜欢准备好的陈述
  • @Elias Van Ootegem 理解,但出于测试目的,我使用的是肮脏和肮脏的。非常感谢您对解决问题的有用意见。
  • meta_value 周围有单引号。你根本不需要任何引号。我投票关闭这些作为印刷错误。
  • @GordonLinoff 谢谢你的建议。请参阅我上面的编辑。我删除了单引号,但这仍然不起作用。您能再提一个建议吗?

标签: php mysql casting sum longtext


【解决方案1】:

已解决:

感谢 Gordon Linoff 指出我的印刷错误。我最终制作了一个样品表并自己敲定了这个。事实上,我的查询中的单引号是不需要的。但是,在我回显结果的地方,我需要单引号,但它们在错误的位置。注意$row['SUM(meta_value)'] 而不是$row[SUM('meta_value')]

此外,我不需要使用 CAST(它不起作用),因为如果查询使用数学,MYSQL 默认会将值视为数学值。

$query = "SELECT meta_key, SUM(meta_value) 
 FROM wp_postmeta 
 WHERE meta_key = '_crowdfundingtotalprice'";

$result = mysql_query($query) or die(mysql_error());
while($row=mysql_fetch_array($result)){
echo $row['SUM(meta_value)'] ."<br>";
}

【讨论】:

    猜你喜欢
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    相关资源
    最近更新 更多