2012-04-10 110 views
-1

我使用的是Android應用程序將數據發送到PHP腳本。以下是PHP腳本。PHP變量後不工作

telejoke.php:

<?php 
    include 'JokeValidation.php'; 
    include 'DBConnect.php'; 

    $username = $_POST['username']; 
    $joke = $_POST['joke']; 
    $dbname = 'Telejoke'; 
    mysql_select_db($dbname); 

    if (validate()){ 
    $query = "INSERT INTO jokes (username, joke) VALUES ('$username','$joke')"; 
    mysql_query($query) or die('Error, insert query failed'); 
    } 
    mysql_close($conn); 
?> 

jokevalidation.php:

<?php 
    include 'DBConnect.php'; 
    $dbname = 'telejoke'; 
    mysql_select_db($dbname); 
    function validate(){ 
    if ($joke == null) return false; 
    else if($username == null) return false; 
    return true; 
    } 
?> 

出於某種原因,PHP腳本將數據放入數據庫中,當我拿出if ($joke == null) return false;else if($username == null) return false;。但是當我將這些語句放入PHP代碼中時,似乎驗證返回false。這是奇怪,因爲$ username和$笑話會去我的數據庫,當我拿出這些聲明意味着它們不能爲空!

幫助表示讚賞。謝謝。

+1

並從那裏你猜是你的validate方法得到瓦爾? – Rufinus 2012-04-10 01:31:19

+0

思想變量是文檔範圍。 :P – moesef 2012-04-10 01:50:48

+0

提示:在你的DBConnect.php文件中使用include_once,所以你不會創建多個連接......並且從它的外觀來看,jokevalidation.php根本不需要數據庫連接(除非你給我們只是一個片段)。 – 2012-04-10 02:20:47

回答

4

您的驗證函數需要訪問$ joke和$ username對象。

function validate($joke, $validate) { 
    if ($joke == null) 
     return false; 
    else if ($username == null) 
     return false; 
    return true; 
} 

您還可以通過使用可以訪問這些變量的validate方法裏面如下:

global $joke, $username 

然而,最好是說你真是驗證什麼,而不是依賴於這些變量是在您的代碼中聲明並設置其他位置。出於其他原因,使用全局可能會失敗。

2

變量有功能範圍。變量$joke$username不要在函數內部存在的,因爲你既沒有宣佈,也沒有通過他們進入功能。使用功能參數:

function validate($joke, $username) { 
    ... 
} 

if (validate($joke, $username)) { 
    ... 
} 
+0

哦。我認爲他們有文件範圍。 Thx澄清。 – moesef 2012-04-10 01:50:06

1

function validate($joke,$username)

還,將它們插入到你的數據庫之前,過濾那些postvars