在两个php文件之间更改字符串

时间:2018-09-21 11:44:38

标签: php

我正在使用mySQL和Highcharts进行项目。 首先,我有一个ESP32,其中有几个,其测量值已写入 一个名为“ MariaDB”的数据库。 我在Highsotck图表中表示的数据库中的度量值。

目前为止还可以,但是我真正的问题是:

我有一个data.php文件和一个main.php文件。我想更改 这两个文件之间的字符串“ $ sensorid”。我可以将变量“ $ sensorid”从main.php发送到 使用“ SESSION”命令。那也可以,但是我不能在 在data.php文件中(但使用echo可以正确发送该值)。

Fshape

希望您能理解我的意思(我是德国人,所以我的英语不太好),否则请问。

3 个答案:

答案 0 :(得分:0)

@ DR.Alfred欢迎来到SO。 第一种建议是您尝试将查询转换为mysqli或PDO语句,因为不建议使用mysql并存在安全问题。

返回您的代码,$ _ SESSION [“ sensorid”]的值正确,但是在您的查询中:

mysql_query("SELECT * FROM `Messwerte` WHERE SensorID = '$sensorid' ");

您尝试使用未声明的变量$ sensorid

如果您需要使用$_SESSION["sensorid"]的值,则可以在查询中直接使用会话变量whitch包含所需的值,或者更好的是,您必须将其分配给变量$ sensorid(或者您可以按自己的方式调用它想要)会话的值,方法如下:

$sensorid = $_SESSION["sensorid"];

,然后在查询中可以使用$ sensorid获取值,因此查询变为:

$result = mysql_query("SELECT * FROM `Messwerte` WHERE SensorID = ' ".$sensorid." ' ");

如果您不想将会话的值分配给新变量,则可以始终在查询中直接使用它:

$result = mysql_query("SELECT * FROM `Messwerte` WHERE SensorID = ' ".$_SESSION["sensorid"]." ' ");

希望我的解释很清楚,并可以帮助您了解如何在php中使用变量。当然,我建议您阅读更多有关基本php和mysql的信息,并在需要处理查询和数据库时使用mysqli或更好的PDO语句。

答案 1 :(得分:0)

@Sigma,谢谢您的详细回答。我试图用您的所有建议解决问题,但是没有用。我正在寻找mysqli或PDO,但看来,较旧的“ mysql”不是问题。从php文件到php文件的字符串似乎不起作用。

这是带有建议的代码。

<?php


SESSION_START();

$sensorID = $_SESSION["sensorID"]; 

    echo "Die empfangene SensorID lautet" . 
          $_SESSION["sensorID"] ;                          //This output is correct :) 

date_default_timezone_set('Europe/Berlin');

$con = mysql_connect("IP of database","username","password");

if (!$con) {
  die('Could not connect: ' . mysql_error());
}

mysql_select_db('MyHome', $con);

$result = mysql_query("SELECT * FROM `Messwerte` WHERE SensorID = ' ".$sensorID." ' ");   /*In this part I need the value '$sensorID'!*/

while($row = mysql_fetch_array($result)) {
  $datum = $row['DateTime'];
  $value = round($row['Messwert'],1);

  $uts = strtotime ($datum);

if (date('I', time()))
{
   $uts = $uts + 7200;
   $x=1;
}
else
{
   $uts=$uts+3600;
if($x==1)
 {
        $uts=$uts-7200;
        $x=0;
 }
}

  $datum=date('l, F j y H:i:s',$uts);
  $uts *= 1000; // convert from Unix timestamp to JavaScript time
   $dataIN[] = array((float)$uts,(float) $value);

}
echo json_encode($dataIN);
mysql_close($con);

?>

第二个php文件

<?php 


$sensorID = "P_INNEN";

SESSION_START(); 


$_SESSION['$sensorID'];

?>

<a href="P_INNEN_data.php">Go to P_INNEN_data.php !</a>

答案 2 :(得分:0)

DR.Alfred知道了,他知道了!我什至没有意识到,因为我一直在寻找这个问题大约2个月。

对于这些感兴趣的人来说,问题出在哪里。我是这样解决的:

<?php

$x = 'P_INNEN';

?>


<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>AZ Elektronik / Automatik, Emmen</title>

        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
        <script type="text/javascript">

$(function() {



    $.getJSON("P_INNEN_data.php?x=P_INNEN", function(data) { //here I had to also fill in "?x=P_INNEN?x=P_INNEN"!, not just "P_INNEN_data.php"


        // Create a timer
        var start = + new Date();

        // Create the chart
        $('#container').highcharts('StockChart', {
            chart: {
                events: {
                    load: function(chart) {
                        this.setTitle(null, {
                            text: 'Built chart at '+ (new Date() - start) +'ms'
                        });
                    }
                },
                zoomType: 'x'
            },

            rangeSelector: {
                buttons: [{
                    type: 'day',
                    count: 1,
                    text: '24h'
                }, {
                    type: 'week',
                    count: 1,
                    text: '1w'
                }, {
                    type: 'month',
                    count: 1,
                    text: '1m'
                }, {
                    type: 'month',
                    count: 6,
                    text: '6m'
                }, {
                    type: 'year',
                    count: 1,
                    text: '1y'
                }, {
                    type: 'all',
                    text: 'All'
                }],
                selected: 1
            },

            xAxis: {
               ordinal: false
            },

            yAxis: {
                title: {
                    text: 'Luftdruck Innen'
                }
            },

            title: {
                text: 'Luftdruck Innen'
            },

            subtitle: {
                text: 'Built chart at...' // dummy text to reserve space for dynamic subtitle
            },

            series: [{
                name: 'mB',
                type: 'line',
                data: data,
                tooltip: {
                    valueDecimals: 1,
                    valueSuffix: ' mB'
                },
                fillColor : {
                    linearGradient : {
                        x1: 0,
                        y1: 0,
                        x2: 0,
                        y2: 1
                    },
                    stops : [[0, Highcharts.getOptions().colors[0]], [1, 'rgba(0,0,0,0)']]
                },
            }]

        });
    });
});
        </script>
    </head>
    <body>
<script src="/Highstock/code/highstock.js"></script>
<script src="/Highstock/code/modules/exporting.js"></script>

<div id="container" style="height: 500px; min-width: 500px"></div>
    </body>
</html>




<?php

$x=$_GET["x"]; //I did it with $_GET[], but SESSION would also work


date_default_timezone_set('Europe/Berlin');

$con = mysql_connect("IP of databse","username","password");

if (!$con) {
  die('Could not connect: ' . mysql_error());
}

mysql_select_db('MyHome', $con);

$result = mysql_query("SELECT * FROM `Messwerte` WHERE SensorID = '$x' "); //There was the main problem: I made two spaces between ' and $x before



while($row = mysql_fetch_array($result)) {
  $datum = $row['DateTime'];
  $value = round($row['Messwert'],2);


  $uts = strtotime ($datum);

if (date('I', time()))
{
    $uts = $uts + 7200;
    $x=1;
}
else
{
    $uts=$uts+3600;
if($x==1)
 {
        $uts=$uts-7200;
        $x=0;
 }
}

  $datum=date('l, F j y H:i:s',$uts);
  $uts *= 1000; // convert from Unix timestamp to JavaScript time
   $data[] = array((float)$uts,(float) $value);

}


echo json_encode($data);
mysql_close($con);

?>