2013-04-25 68 views
0

我是一名新手php/js程序員,學習如何使用php和MySQL更高效地完成任務。我正在通過將服務器IP存儲在數據庫中來開展個人項目(自學習練習)。網絡上的很多頁面都建議在MySQL中存儲IPv4地址的最佳方法是使用整數字段並轉換IPv4地址以存儲它。這不是問題,這很容易做到。將數組值轉換爲longtoip

但是我正在填充一個數據表,然後以數組的形式將信息拉回來填充每一行。當涉及數組時,我不知道如何通過longtoip將這些值轉換回可讀格式。你會在下面的輸出部分看到我遇到的問題,網上的大多數例子都沒有處理這種情況。

請注意我不關心其他代碼中的安全性,我知道它需要一些工作,但我會在稍後解決(對於那些意識到這種情況的人)。

輸入:

$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域的結果產生的結果 '-1062731519' 一旦寫入到MySQL。

輸出:

<?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); 

?> 

關於如何解決這個一個任何簡單的方法是極大的讚賞。

謝謝。

回答

1

你試試這個..

while($row = mysql_fetch_object($rs)){ 
$row->ipv4 = long2ip($row->ipv4); 
array_push($result, $row); 

}

這通常更新與新值$行對象..嘗試,讓我知道,如果這個工程

+0

它沒有工作,除了我在函數語法上犯了一個小錯誤,它實際上是'long2ip'。謝謝你這個容易理解的迴應:) – user1894814 2013-04-25 03:42:52