2013-03-22 49 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