2013-03-22 60 views
2

好吧,我使用了一些我在網上找到的用於主辦March Madness pool網站的php/SQL腳本。設置和調試這些傢伙代碼是一件很痛苦的事情,但我基本上已經開始工作了。出於某種原因,作者創建了一個「括號」表和一個「分數」表。 「括號」表格要大得多,並且包含id,姓名,人物,電子郵件,時間,tiebreaker以及全部63人的遊戲選擇的變量。 id爲每個括號遞增。名稱實際上是創建者給出的名稱的名稱。人是人的名字。等等。SQL查詢中的表值問題

出於某種原因,這傢伙爲括號劃分了一個單獨的表格。 「分數」表格包含變量:id,name,score和scoring_type。

通過數據實際顯示到網站的腳本排序,我不知道創建者在想什麼,但幾乎所有顯示的數據都使用「分數」表。

我的問題:分數表沒有人名的變量。所以排名和括號都是按照人給出括號的名字顯示和組織的。人們不停地問我哪個支架是誰的。我想這是實施它的一個快速解決方案,但男孩是我錯了。我是MySql的新手,並沒有完全理解我在做什麼。但我看了一些東西,我已經嘗試了很多東西,不能讓它工作。

我試過的東西:我在考慮把表格合併成一個表格,但我不想花幾個小時在我每年設置一次的東西上。對兩個表格進行圖形化都有兩個相同的值,名稱和ID,我試着做一些查詢來匹配值並請求變量「person」。但這些都沒有奏效。

我在幾個不同的方式修改此:

$query = "SELECT person FROM `brackets' WHERE name='$name'"; 
$result = mysql_query($query,$db) or die(mysql_error()); 
echo "mysql_result($result)"; 

我使用和不使用變量嘗試。我也試過:

$query = 'SELECT * FROM `brackets'; 
$result = mysql_query($query,$db) or die(mysql_error()); 
$dataArray = array(); // create a variable to hold the information 

while (($row = mysql_fetch_array($result, MYSQL_ASSOC)) !== false){ 
    $dataArray[] = $row; // add the row in to the results (data) array 
} 
$personsNameToDisplay = personsName($name, $dataArray); 
echo "$personsNameToDisplay"; 

有了一個功能,我也試圖與幾種方法:

function personsName($passedBracketName, $dataArray){ 
    $personsMatchedName; 
    foreach ($dataArray as $key => $value){ 
      if($value == $passedBracketName){ 
       $personsMatchedName = $value['person']; 
      } 
    } 
return $personsMatchedName; 
} 

的錯誤,我已經得到的是:

Table 'mlmadness.brackets' WHERE name='beasters'' doesn't exist 

然而,當我進入mySQL,並點擊「括號」,然後「名稱」肯定是名稱值爲「beasters」的支架

感謝

+0

你有你的腳本檢查拼寫和字母大小寫? – 2013-03-22 01:14:33

+0

是的,幾次。 – ModdedLife 2013-03-22 01:15:05

+0

反正你不應該爲新代碼使用mysql_ *函數。使用MySQLi或PDO等替代方案;它會使這樣的問題更容易調試 – 2013-03-22 01:16:34

回答

0
"SELECT person FROM 'brackets' WHERE name='{$name}'"; 

應該做的伎倆。你也有blasters' .. the closing should also be,而不是一個'


更好的方式:

$mysqli = new mysqli("localhost", "username", "password", "database_name"); 

$query = "SELECT person FROM brackets WHERE name='{$name}'"; 
$result = $mysqli->query($query); 

while($row = $result->fetch_array()) 
{ 
    var_dump($row); 
} 
+0

我試過了,這是錯誤: 您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行 – ModdedLife 2013-03-22 01:57:19

+0

編輯代碼的''括號''處使用正確的語法WHERE name ='beasters'。 – 2013-03-22 02:02:29

+0

我假設我需要將$ mysqli行放在所有頁面上? – ModdedLife 2013-03-22 02:12:10