2014-09-23 45 views
0

這裏我再次! 我來過一個相當討厭的問題,我很確定我沒有做錯。MYSQL關於布爾給定而不是變量

當我嘗試檢查用戶名是否已經通過PHP在MYSQL數據庫中存在時,它會忽略該字符串是一個布爾值而不是變量。

這是PHP代碼:

if (isset($_POST['Submit1'])) 
{ 
    $username = $_POST['username']; 
    if(IsNameInUse($username)) header("Location: cselect.php?exist"); 
} 
else if (isset($_POST['Submit2'])) 
{ 
    $username = $_POST['username']; 
    if(IsNameInUse($username)) header("Location: cselect.php?exist"); 
} 
else if (isset($_POST['Submit3'])) 
{ 
    $username = $_POST['username']; 
    if(IsNameInUse($username)) header("Location: cselect.php?exist"); 
} 

這裏是 「IsNameInUse」 從我的函數文件:

function IsNameInUse($username) 
{ 
    $username = mysql_real_escape_string($username); 
    $query = mysql_query("SELECT COUNT(ID) FROM Accounts WHERE Username = '$username'"); 
    return (mysql_result($query, 0) == 1) ? true : false; 
} 

我已經執行了: 「回聲$的用戶名;」這清楚地表明一個字符串被設置爲$ username。它清楚地給了我我輸入的字符串。現在,我真的不知道爲什麼它給了以下錯誤:

[error] PHP Warning: mysql_result() expects parameter 1 to be resource, boolean given in /var/zpanel/hostdata/paradise/public_html/paradiseroleplay_com/includes/functions.php on line 7 

所以在這裏我再次問互聯網的永不落幕的知識。 Regards, Heartfire。

編輯修好了。 「對不起,對mysql錯誤的死亡,清楚地表明我可以是多麼愚蠢,我忘了帳戶,我做了」AccID「而不是」ID「......感謝一堆,現在修好了。 關於DTO,好點 - 會做。

+0

在mysql_query上放一個''或者死(mysql_error())'來查看最新情況,不管怎樣,不要使用mysql – Ghost 2014-09-23 09:02:56

+0

@Ghost的意思是說你應該使用['PDO'](http://php.net/manual/en/book.pdo.php)或['mysqli'](http://php.net/manual/en/mysqli.quickstart。 PHP)。原始的mysql函數是舊的,在某些情況下不安全。 – max 2014-09-23 09:07:43

+0

對不起。對mysql錯誤的死,清楚地表明我可以是多麼愚蠢。我忘了帳戶,我做了「AccID」而不是「ID」......感謝一堆,現在修好了。 – Heartfire 2014-09-23 09:08:53

回答

0

問題是,在第7行的functions.php(你可以張貼這一行也)PHP的想要的資源到數據庫。

例如$鏈接將資源是這種情況:

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 
echo 'Connected successfully'; 
mysql_close($link); 

而且你正在運行一個函數內部MySQL的功能,請閱讀這篇文章的詳細信息: How to put mysql inside a php function?

希望這會有所幫助。如果沒有,請提供函數的線路