2015-06-20 83 views
0

這是我的第一個問題,因爲我最近加入了網站,我真的需要在這方面的幫助。 我想要做的是發送數據從python到php,然後,在PHP中,我連接到一個數據庫,在那裏我正在測試一個值,然後我會發回數據到python通過json創建PHP。 所以我使用的代碼是: Python端:從python發送數據到php,並從php返回json數據到python

import requests 
import json 
getdata = {'cpu': '1324324', 'tempvalue': '34543543'} 
resp = requests.post("http://localhost/try.php", params=getdata) 
r = requests.get('http://localhost/try.php')#.json() 
getdata=r.json() 
print(getdata['cpu']) 
print(getdata['tempvalue']) 

對於這一部分,POST方法工作的所有right.but一開始拿到方法不工作,我不斷收到錯誤:

ValueError: Expecting value: line 2 column 2 (char 3) 

而PHP一邊是: 我不會權連接到數據庫代碼,因爲它是工作正常的。

$sql= "SELECT * FROM temp WHERE cpu = '".$value1."'"; 
$rs=$conn->query($sql); 
#$check=mysqli_query("SELECT * FROM temp WHERE cpu = '".$value1."'"); 
if ($rs === TRUE) { 
    $row_cnt = $result->num_rows; 
    if($row_cnt == 1){ 
     $result["cpu"] = $value1;#$result is predefined in the script. 
     $result["tempvalue"] = $value2; 

    }} 
else{ 
    echo "did not find"; 
    $response["error"] = "error"; 
    } 

json_encode($response); 

所以這就是我doing.Is有什麼錯的代碼嗎?是Python腳本獲得任何的數據?或者我應該添加什麼東西呢?而且是PHP腳本吧?難道我真的發送回json到python?並且謝謝大家。

+0

你能顯示python錯誤的完整回溯嗎?這似乎是一個json解析錯誤,但很難從您提供的信息中說出。你也可以打印原始響應'r'。 – Zac

+0

好吧,這是我得到的回溯: 回溯(最近呼叫最後): 文件「C:\ Users \ PC \ Documents \ Python \ send1.py」,第22行,在 get = r.json () 還有其他行,但沒有什麼特別關於它 ValueError:期望值:第2行第2列(char 3) 而當我使用除了我得到: 期待值:第2行第2列(字符3) – damien220

回答

0

我找到了我的問題的答案,並且像往常一樣非常簡單。

我們必須做的是將PHP文件的內容類型添加到json中,以便python腳本知道應該讀取哪種類型的數據。因此要在PHP腳本中添加的代碼行爲:

header('Content-Type: application/json'); 

而且它必須在文件的開頭。

0

問題出在PHP方面。

您只返回$response數組,但您的數據實際上是在$result陣列中。

因此,當一切都成功時,由於沒有創建$response數組,因此json響應無效。

您需要調整您的PHP代碼,這裏是一個例子:

if ($rs === TRUE) { 
    $row_cnt = $result->num_rows; 
    if($row_cnt == 1){ 
     $result["cpu"] = $value1;#$result is predefined in the script. 
     $result["tempvalue"] = $value2; 

    }} 
else{ 
    echo "did not find"; 
    # $response["error"] = "error"; 
    $result["error"] = "error"; 
    } 

json_encode($result); 

您也有一些其他的問題,如不使用參數化查詢,所以你的代碼受到SQL注入和你忽略第一個查詢的結果。

+0

謝謝你的幫助,但我正在檢查我的代碼,並且我不知道結果來自哪裏,我正在使用響應變量而不是result.Yesterday代碼工作,但今天不幸,它不是和我不知道爲什麼。 – damien220