0

私は初心者の php/js プログラマーであり、php と MySQL でより効率的に物事を行う方法を学んでいます。サーバーのIPをDBに保存することで、個人的なプロジェクト(自己学習演習)に取り組んでいます。Web 上の多くのページでは、MySQL に IPv4 アドレスを格納する最良の方法は、整数フィールドを使用し、IPv4 アドレスを変換して格納することであると示唆しています。これは問題ではありません。これを行うのは非常に簡単でした。

ただし、データ テーブルにデータを入力していて、情報を配列の形式に戻して各行にデータを入力しています。配列が関係している場合に longtoip を使用して、これらの値を読み取り可能な形式に変換する方法がわかりません。以下の出力セクションで、Web 上のほとんどの例がこの種の状況に対処していない問題に遭遇していることがわかります。

残りのコードのセキュリティについては気にしないことに注意してください。いくつかの作業が必要であることはわかっていますが、後で修正します(そのようなことを意識している場合)。

入力:

$name = $_REQUEST['name'];
$ipv4 = $_REQUEST['ipv4'];
$ipv6 = $_REQUEST['ipv6'];
$port = $_REQUEST['port'];
$username = $_REQUEST['username'];
$password =$_REQUEST['password'];

$ipv4 = ip2long($ipv4);

require 'conn.php';

$sql = "insert into servers(name,ipv4,ipv6,port,username,password) values('$name','$ipv4','$ipv6','$port','$username',$password)";

mysql_query($sql) or die(mysql_error());
//mysql_query($sql);
echo json_encode(array(
    'id' => mysql_insert_id(),
    'name' => $name,
    'ipv4' => $ipv4,
    'ipv6' => $ipv6,
    'port' => $port,
    'username' => $username,
    'password' => $password
));

「192.168.1.1」を ipv4 フィールドに入力した結果は、MySQL に書き込まれると「-1062731519」という結果になります。

出力:

<?php

require 'conn.php';

$rs = mysql_query('select * from servers');
$result = array();
while($row = mysql_fetch_object($rs)){
    array_push($result, $row);
}

echo json_encode($result);

?>

これに取り組む方法に関する簡単な方法は大歓迎です。

ありがとう。

4

1 に答える 1