【问题标题】:Passing variable from shell exec to mysql_query [duplicate]将变量从 shell exec 传递到 mysql_query [重复]
【发布时间】:2017-06-04 18:50:48
【问题描述】:

我正在尝试从连接到树莓派的传感器 DHT22 读取温度并通过 PHP 脚本将其写入 mysql DB。

我的体温是这样的:

$temp = shell_exec('./temp.py');

脚本返回 45 或 45.7 等数字...与湿度相同。当我在同一个脚本中回显它时,它可以工作。 而我无法通过的东西就在这里:

$sql='INSERT INTO values (id, date, time, timestamp, temp, hum) VALUES ("", NOW(), NOW(), NOW(), "$temp", "$hum")';
$result = MySQL_Query($sql);

但在 DB 中总是写 $temp 和 $hum,而不是实际值。我想我已经尝试过所有可能的引号组合等...... 什么可能是错的?提前感谢您的回答。

【问题讨论】:

  • 它是一个“字符串”,将"$temp", "$hum" 更改为"'.$temp.'", "'.$hum.'"

标签: php mysql shell


【解决方案1】:
$sql="INSERT INTO values (id, date, time, timestamp, temp, hum) VALUES (\"\", NOW(), NOW(), NOW(), \"$temp\", \"$hum\")";
$result = MySQL_Query($sql);

注意双引号。

双引号和单引号是有区别的:

  • 双引号由 php 引擎解析。您可以将变量放入其中,并可用于显示转义的特殊字符。
  • 另一方面,单引号按原样显示。它们不被 PHP 解析并且不需要转义,除了 ' 告诉解释器引号是字符串的结尾还是它的一部分。

您使用的是单引号,这就是您的字符串未解析为变量的原因。

更多信息请见PHP Manual

【讨论】:

    猜你喜欢
    • 2016-09-17
    • 2013-09-09
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多