2017-06-15 78 views
0

我试图从我的数据库中的列回合中获得“回合”的值。所以,我想要获得每个辩论/帖子的一个字段值。基于价值/数量,它应该显示不同的东西。当我认为它的值为NULL时,即使该辩论/帖子的db字段中的值是4.这不仅仅是辩论,而是所有这些都会发生。如何获得列中字段的实际值并将其分配给名为$ rounds的变量。这个变量需要具有每次辩论的价值,而不仅仅是辩论。从列中获取值,但返回null?

<?php 
$servername = ""; 
$username = ""; 
$password = ""; 
$dbname = ""; 

$con = new mysqli($servername, $username, $password, $dbname); 

if($con->connect_error) 
{ 
    die("Connection failed: " . $con->connect_error); 
} 
else 
{ 
    $sql = "SELECT rounds FROM vf_Discussion"; 
    $result = $con->query($sql); 

    $allRounds = $result->fetch_row(); 
    $rounds = $allRounds[0]; 

    var_dump($rounds); 
} 

mysqli_close($con); 

$rounds1 = '<h2 class="CommentHeading">Round 1 (Pro)</h2> <br> <h2 class="CommentHeading">Round 1 (Con) </h2>'; 
$rounds2 = '<h2 class="CommentHeading">Round 2 (Pro)</h2> <br> <h2 class="CommentHeading">Round 2 (Con)</h2>'; 
$rounds3 = '<h2 class="CommentHeading">Round 3 (Pro)</h2> <br> <h2 class="CommentHeading">Round 3 (Con)</h2>'; 
$rounds4 = '<h2 class="CommentHeading">Round 4 (Pro)</h2> <br> <h2 class="CommentHeading">Round 4 (Con)</h2>'; 
$rounds5 = '<h2 class="CommentHeading">Round 5 (Pro)</h2> <br> <h2 class="CommentHeading">Round 5 (Con)</h2>'; 

foreach($allRounds as $rounds) 
{ 
    if($rounds == 1) 
    { 
    echo $rounds1; 
    foreach($Sender->Data('Answers') as $Row) 
    { 
     $Sender->EventArguments['Comment'] = $Row; 
     WriteComment($Row, $Sender, Gdn::Session(), 0); 
    } 
    } 
    if($rounds == 2) 
    { 
    echo $rounds1; 
    echo $rounds2; 
    foreach($Sender->Data('Answers') as $Row) 
    { 
     $Sender->EventArguments['Comment'] = $Row; 
     WriteComment($Row, $Sender, Gdn::Session(), 0); 
    } 
    } 
    if($rounds == 3) 
    { 
    echo $rounds1; 
    echo $rounds2; 
    echo $rounds3; 
    foreach($Sender->Data('Answers') as $Row) 
    { 
     $Sender->EventArguments['Comment'] = $Row; 
     WriteComment($Row, $Sender, Gdn::Session(), 0); 
    } 
    } 
    if($rounds == 4) 
    { 
    echo $rounds1; 
    echo $rounds2; 
    echo $rounds3; 
    echo $rounds4; 
    foreach($Sender->Data('Answers') as $Row) 
    { 
     $Sender->EventArguments['Comment'] = $Row; 
     WriteComment($Row, $Sender, Gdn::Session(), 0); 
    } 
    } 
    if($rounds == 5) 
    { 
    echo $rounds1; 
    echo $rounds2; 
    echo $rounds3; 
    echo $rounds4; 
    echo $rounds5; 
    foreach($Sender->Data('Answers') as $Row) 
    { 
     $Sender->EventArguments['Comment'] = $Row; 
     WriteComment($Row, $Sender, Gdn::Session(), 0); 
    } 
    } 
} 
?> 
+0

不确定您为什么使用所有'if'。你最好使用这样简单的代码:$ result = mysql_query(“SELECT rounds FROM vf_Discussion”); ($ row = mysql_fetch_array($ result)) echo $ row ['column']; .... } – mele

+0

@mele,仍然不起作用。 – julereca

回答

0

我用PDO s。您的错误是在$rounds的转让。 而且我清理了代码以获得更好的可读性:

<?php 
$servername = ""; 
$dbname = ""; 
$username = ""; 
$password = ""; 

$pdo = NULL; 

try 
{ 
    $pdo = new PDO('mysql:host=' . $servername . ';dbname=' . $dbname, $username, $password); 
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} 
catch(PDOException $exception) 
{ 
    die("Connection failed: " . $exception->getMessage()); 
} 

$rounds = []; // array we want to save all the rounds to 

// the database 
$query = "SELECT rounds, COUNT(*) AS cnt FROM vf_Discussion GROUP BY rounds ORDER BY rounds"; 
$statement = $pdo->prepare($query); 
$statement->execute(); 

$rows = $statement->fetchAll(\PDO::FETCH_ASSOC); 

foreach($rows as $row) 
{ 
    $rounds[] = ['name' => $row['rounds'], 'count' => $row['cnt']]; 
} 

foreach($rounds as $round) 
{ 
    $name = $round['name']; 
    $cnt = $round['cnt']; 

    echo '<h2 class="CommentHeading">Round ' . $round . ' (Pro)</h2> <br> <h2 class="CommentHeading">Round ' . $round . ' (Con)</h2> <br> <h2 class="CommentHeading">Number of Rounds ' . $cnt . '</h2>'; 

    foreach($Sender->Data('Answers') as $Row) 
    { 
    $Sender->EventArguments['Comment'] = $Row; 
    WriteComment($Row, $Sender, Gdn::Session(), 0); 
    } 
} 
?> 
+1

执行后,它将返回所有的ifs,所以,第1轮,第1轮第2轮,第1轮第2轮第3轮,第1轮第2轮第3轮第4轮,现在就得到它。我怎样才能解决这个问题? – julereca

+0

我编辑了帖子。试试吧@julereca – Phil

+0

现在它只是重复永不结束或几乎永远不会结束“轮(PRO)”。我是否应该使用编辑过的代码或代码片段来替换之前提供的所有代码?如果片段,哪部分? – julereca