可以在没有任何用户操作的情况下运行sql查询吗?

时间:2016-09-08 06:29:06

标签: php mysql server

我想知道当其他服务器使用post方法将数据发送到我的服务器时是否可以运行sql查询。没有用户操作。它直接从服务器向服务器发送数据。

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    $servername = "localhost";
    $username = "test";
    $password = "test123";

    $conn = new mysqli($servername, $username, $password);

    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 

    $selected = mysql_select_db("test",$conn)  or die("Could not select examples");


    $sql = "INSERT INTO `tablename`.`test` (`id`, `startdate`, `enddate`) VALUES (NULL, '2016-09-08', '2016-09-09');";

    $retval = mysql_query( $sql, $conn );
    if(! $retval )
    {
      die('Could not enter data: ' . mysql_error());
    }

    mysql_close($conn);
}
?>

可以在没有任何用户操作的情况下运行查询吗?谢谢。

2 个答案:

答案 0 :(得分:1)

有一种后端 - 前端方式如何在客户端和服务器之间进行通信。我知道这听起来并不像你想要的那样但是确实如此。

它是如何运作的: 因为后端从客户端获取请求并且基于此请求他做了一些事情(例如make SQL Select)。

在您的情况下,您的客户端将是另一台服务器。请求不会来自某些.js,而是来自另一个.php文件。但它仍然以同样的方式工作。

非常基本的例子:

这是发送数据的服务器

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,"http://www.example.com/server.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
            "postvar1=value1");

// in real life you should use something like:
// curl_setopt($ch, CURLOPT_POSTFIELDS, 
//          http_build_query(array('postvar1' => 'value1')));

// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);

这是等待请求的服务器:

if(isset($_POST['postvar1'])) {
   $data = $_POST['postvar1'];
   // Here comes your logic..
}

答案 1 :(得分:1)

是的,您无需用户执行任何操作即可运行查询。您也不想使用mysql_*。您可能希望查看mysqli_*函数或PDO。