PHP - SQL查询使用var_dump时返回array(0){}

时间:2016-11-23 15:01:49

标签: php jquery mysql sql ajax

我想知道为什么我的查询没有返回标题建议的数据

我的JQuery:

$(".output").click(function() {
    var noteid = $(this).data("noteid");
    $("#right-box").load("connectionDetails.php", { noteid: noteid });
});

我的connectionDetails.php

<?php
$myServer = "replaced";
$connectionInfo = array('Database' => 'replaced', 'UID' => 'replaced', 'PWD' => 'replaced');

//connection to the database
$conn = sqlsrv_connect($myServer, $connectionInfo)
  or die("Couldn't connect to SQL Server on $myServer"); 

//Test connection to server
// if ($conn) 
// {
//     echo "connection successful";    # code...
// }

//Defining my queries
$getNotes = "SELECT NoteID, NoteName, Note FROM Notes";
$getTemplateNotes = "SELECT TemplateNoteID, TemplateNoteName, TemplateNote FROM TemplateNotes";
$getReplaceVariables = "SELECT ReplaceVariableID, ReplaceVariableName, ReplaceVariableNote FROM ReplaceVariables";
$showNoteInfo = "SELECT Note FROM Notes WHERE NoteID = '" . isset($_POST['noteid']) . "'";

var_dump($_POST);

$resultNotes = sqlsrv_query( $conn, $getNotes );
$resultTemplate = sqlsrv_query($conn, $getTemplateNotes);
$resultVariables = sqlsrv_query($conn, $getReplaceVariables);
$showNotes = sqlsrv_query($conn, $showNoteInfo);




if( $resultNotes === false) 
{
    die( print_r( sqlsrv_errors(), true) );
}
if( $resultTemplate === false) 
{
    die( print_r( sqlsrv_errors(), true) );
}

if( $resultVariables === false) 
{
    die( print_r( sqlsrv_errors(), true) );
}

?>

我的index.php

<!DOCTYPE html>
<html>
<head>
<title>Juan - Home</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript" src="scripts/scripts.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet" media="all">
<link rel="stylesheet" href="styles/igotswag.css" type="text/css">
<link rel="stylesheet" href="styles/swaganimations.css" type="text/css">

</head>
<body>

<?php include 'connectionDetails.php'; ?>


<!-- Header Area -->
<table class="header-container">
    <tr>
        <td style="width: 40%; text-align: left;"><a href="index.php"><img class="hover-cursor" src="Images/TEAMS_Logo.png"></a></td>
        <td style="width: 10%;" class="custom-header">TEAMS Wiki <span style="font-size: 30px;" class="glyphicon glyphicon-globe"></span></td>
        <td style="width: 40%;">
            <table style="text-align: right; width: 100%">
                <tr>
                    <td style="text-align: right;"><span style="font-size: 24px; text-align: right;" class="hvr-icon-grow"></span></td>
                </tr>
            </table>
        </td>
    </tr>
</table>

<div class="pull-down-container">
    <div class="panel1">
        <br />
        <p>Now you see me!</p>
    </div>
    <p class="slide" style="text-align: center;">
        <div class="pull-me hvr-icon-hang" style="text-align: center; vertical-align: top;">More</div>
    </p>
</div>
<!-- End Header Area -->



<!-- Main Body Area -->

<div class="main-container-notes">
    <div id="left-box">
        <?php 

        echo "<div style='width: 100%;'>";

        while( $noteName = sqlsrv_fetch_array( $resultNotes, SQLSRV_FETCH_ASSOC)) 
        {
            echo "<div class='hvr-bounce-to-right1 hover-cursor output' data-noteid='{$noteName['NoteID']}' style='width: 100%; border-right: 5px solid #00AA88; height: 50px;'>" . $noteName['NoteName'] . "</div>";
        }

        echo "</div>";
        ?>
    </div>
    <div id="right-box">
       <?php 
            if ($note = sqlsrv_fetch_array( $showNotes, SQLSRV_FETCH_ASSOC)) 
            {
                echo $note['Note'];
            }
        ?>
    </div>
</div>

<!-- End Main Body Area -->


<!-- Footer Area -->

<!-- End Footer Area -->

</body>
</html>

在我的主索引中有一个while循环,可以从数据库中检索数据,每个数据通过我的SQL表中的data-noteid='{$noteName['NoteID']}'给出一个ID,然后在我的JQuery中分配

所以当我点击其中一个生成的div时,它会根据ID

在同一页面上拉伸扩展文本(因此是AJAX)

当我在connectionDetails.php中使用var_dump($ _ POST)时,它返回数组(0){}

那为什么不找到任何ID?

1 个答案:

答案 0 :(得分:1)

嗯,我已经从你的代码中获取了基础知识并构建了一些测试代码。

所以我们......

<强>的index.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<?php include "test.php"; ?>

<script>
    $(".output").click(function () {
        var noteid = $(this).data("noteid");
        console.log('Got here - Noteid = ' + noteid);
        $("#right-box").load("connectionDetails.php", {noteid: noteid});
    });
</script>
</body>
</html>

减少您感兴趣的代码版本。

<强> test.php的

<div id="left-box">
    <?php
    echo "<div style='width: 100%;'>";
    $noteName['NoteID']   = 1;
    $noteName['NoteName'] = 'Note 1';
    echo "<div class='hvr-bounce-to-right1 hover-cursor output' data-noteid='{$noteName['NoteID']}' 
          style='width: 100%; border-right: 5px solid #00AA88; height: 50px;'>" . $noteName['NoteName'] . "
          </div>";

    $noteName['NoteID']   = 2;
    $noteName['NoteName'] = 'Note 2';
    echo "<div class='hvr-bounce-to-right1 hover-cursor output' data-noteid='{$noteName['NoteID']}' 
          style='width: 100%; border-right: 5px solid #00AA88; height: 50px;'>" . $noteName['NoteName'] . "
          </div>";
    ?>
</div>
<div id="right-box">
</div>

connectionDetails.php

<?php
var_dump($_POST);

所以这有效......但是将js段移到test.php的包含之上会使它无效。

这表明您的js脚本需要在页面加载后运行。 如果我正确地假设你的JS在<script type="text/javascript" src="scripts/scripts.js"></script>

,那么你现在拥有它

所以你只需将它移到页面的末尾...... DOM元素必须在调用JS之前出现......但只是检查$(document).ready()是否有帮助...

选项2 无需更改js包含的位置......只需要像这样包装当前的js代码......

$(document).ready(function () {
    $(".output").click(function () {
        var noteid = $(this).data("noteid");
        console.log('Got here - Noteid = ' + noteid);
        $("#right-box").load("connectionDetails.php", {noteid: noteid});
    });
})

正如它暗示的那样,它将等到文档加载并且它会很高兴...

在大多数情况下,虽然您倾向于在页面末尾加载所有JS,因此在任何JS被触发之前就会出现...

下一位...... 这真的很粗糙,准备好并且没有经过测试,但这个想法就在那里......

所以只是处理你的connectionDetails.php的主要部分,我已经采取了 处理该职位的部分......

   //... Your pre existing code here for the DB etc...  

   // Rewrite of this section of connectionDetails.php

    //Defining my queries
    $getNotes = "SELECT NoteID, NoteName, Note FROM Notes";
    $getTemplateNotes = "SELECT TemplateNoteID, TemplateNoteName, TemplateNote FROM TemplateNotes";
    $getReplaceVariables = "SELECT ReplaceVariableID, ReplaceVariableName, ReplaceVariableNote FROM ReplaceVariables";

    $resultNotes = sqlsrv_query( $conn, $getNotes );
    $resultTemplate = sqlsrv_query($conn, $getTemplateNotes);
    $resultVariables = sqlsrv_query($conn, $getReplaceVariables);

    // Still in development
    // ====================
    //  This is very rough and ready just for testing
    //  On Initial Page load, we don't have anything so this is okish
    if (isset($_POST['noteid'])) {
        $showNoteInfo = "SELECT Note FROM Notes WHERE NoteID = " . $_POST['noteid'];
        $showNotes    = sqlsrv_query($conn, $showNoteInfo);
    }
    // *** The rest of your code *** 

请记住这只是第一次我们可以做得更好......