WebRequest общение с MySQL возможно ли и как ???

 

WebRequest общение с MySQL возможно ли и как ???

П‌римеры работы как можно обратиться к базе через интернет ?

 
Vladimir Pastushak:

WebRequest общение с MySQL возможно ли и как ???

П‌римеры работы как можно обратиться к базе через интернет ?


Сделайте php прослойку в виде API. Отправляйте и принимайте данные. На стороне сервера выполняйте запросы.
 
Igor Volodin:

Сделайте php прослойку в виде API. Отправляйте и принимайте данные. На стороне сервера выполняйте запросы.

Можно пару простых примеров ?
 
Vladimir Pastushak:

Можно пару простых примеров ?

Хорошо, сделаю через часик-два, сейчас некогда
 
Vladimir Pastushak:

Можно пару простых примеров ?

в гугле просто немерянное количество материала.

<?php
$servername = "localhost:3306";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 results";
}

mysqli_close($conn);
?>

 
Vladimir Pastushak:

WebRequest общение с MySQL возможно ли и как ???

П‌римеры работы как можно обратиться к базе через интернет ?

у MySQL помниться существует инсекурный плагин для REST.

Если нестрашно его поставить на базу - то почему-бы и нет, зато и кодить на стороне сервера ненадо :-)

 
Maxim Kuznetsov:

у MySQL помниться существует инсекурный плагин для REST.

Если нестрашно его поставить на базу - то почему-бы и нет, зато и кодить на стороне сервера ненадо :-)


http://mysqlserverteam.com/mysql-5-7-labs-inserting-updating-and-deleting-records-via-http/

https://labs.mysql.com/

MySQL 5.7 Labs — Inserting, Updating, and Deleting Records via HTTP
MySQL 5.7 Labs — Inserting, Updating, and Deleting Records via HTTP
  • 2015.05.05
  • Tony Darnell
  • mysqlserverteam.com
In the MySQL Labs version of MySQL version 5.7, there is a new HTTP plugin. The HTTP plugin documentation from the labs site provides this information (from MySQL Labs): The HTTP Plugin for MySQL adds HTTP(S) interfaces to MySQL. Clients can use the HTTP respectively HTTPS (SSL) protocol to query data stored in MySQL. The query language is SQL...
 

а зачем все это когда хватит и 8 строк кода ???

<?
//--- Конектимся к серверу
mysql_connect($_GET['server'], $_GET['user'], $_GET['password']) or die (mysql_error());
//--- Конектимся к базе
mysql_select_db($_GET['db_name']) or die (mysql_error());
//--- Указываем кодовую страницу
mysql_query("set character_set_client  ='utf8'");
mysql_query("set character_set_results ='utf8'");
mysql_query("set collation_connection  ='utf8_general_ci'");
//--- Делаем запрос к базе
$sql = mysql_query($_GET['query']) or die('error #'. mysql_errno() .' : '. mysql_error());
//--- Получаем ответ в формате JSON
header('Content-type: application/json; charset=utf-8');
echo json_encode($sql);

?>

‌SQL запрос формируем на стороне терминала [не забываем про экранирование кавычек]

 

Ну вот накидали уже примеров )) Конечно если не сильно переживать за безопасность, то можно и запросы строками слать.

А если по хорошему, то запросы нужно защитить, хотя бы через секретный ключ-свертку который в MQL-проге генерится на основе отправляемой строки и свертка проверяется на сервере.

<?
$salt = 'KFDNI(#(_)OMDLKNKJN';
$servername = "localhost:3306";
$username = "username";
$password = "password";
$dbname = "myDB";

$result = [];

$validate_key = isset($_POST['key']) && md5($salt.$_POST['query']) == $_POST['key'];

if ($validate_key) {

    //--- Конектимся к серверу
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    if ($conn) {
        mysqli_query($conn, "set names utf8");
        $result = mysqli_query($conn, $_POST['query']);
        if (!$result) {
            $result = ['error'=>mysqli_error($conn)];
        }
        mysqli_close($link);
    } else {
        $result = ['error'=>'Unable to connect to MySQL'];
    }
} else {
    $result = ['error'=>'Access forbidden'];
}

header('Content-Type: text/json; charset=utf-8');
echo json_encode($result);

?>
в MQL проге отправлять в поле key строку запроса зашифрованную с той же солью

md5 от @o_o  есть тут 

https://www.mql5.com/ru/code/1553
 

А кто-нибудь может выложить пример, как записать число A в таблицу Table через WebRequest ?

Вот пример на PHP

<html>
 <head>
   <title>Test of PHP</title>
 </head>
 <body>
 
<?php
  $mysqli = new mysqli("host", "User", "password", "database_name");
  if ($mysqli->connect_errno) 
  {
    echo "Не удалось подключиться к MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
  }  
  settype($a, 'integer');  
  $a = mt_rand(5, 15); 
  echo "Result: ",$a;a
  if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
      !$mysqli->query("CREATE TABLE test(id INT)") ||
      !$mysqli->query("INSERT INTO test(id) VALUES ($a)")) 
    {
      echo "Не удалось создать таблицу: (" . $mysqli->errno . ") " . $mysqli->error; 
    }
  mysqli_close($mysqli);
?>

 </body>
</html>
Причина обращения: