javascript - PHP 数组不会存储变量

标签 javascript php mysql arrays

我正在开发一个网站,在编码时,我遇到了一个奇怪的错误。

我将 MySQL 查询结果存储在一个数组中,然后使用存储的数据调用 JavaScript 函数。该数组最初包含 9 项:8 项为 tinyint(4) 类型(在数据库中 - 我不知道它是否有用),一项为 int(11)。后来,我意识到我也必须向它们传递一个 String,所以我包含了一个 Varchar(40) 类型的项目。

问题就在这里。到目前为止,代码运行没有任何错误 - 我可以传递变量,在 JS 代码中使用它们并将它们显示在网站上。一旦包含该字符串,站点就会崩溃(不显示任何内容)。

这是代码:

<?php

// Create connection
$con=mysqli_connect("mysql7.000webhost.com","a2248489_admin","SQL123DevAdmin","a2248489_players");
$con2=mysqli_connect("mysql7.000webhost.com","a2248489_admin","SQL123DevAdmin","a2248489_players");

// Check connection
$troopArray = array(array()); 
$result = mysqli_query($con,"SELECT  ID, Name FROM Player");

$counter = 0;

while($row = mysqli_fetch_array($result)) {
$troops = mysqli_query($con,"SELECT * FROM Troops WHERE ID = '" . $row['ID'] . "' ");
while($sor = mysqli_fetch_array($troops)) {
    $troopArray[$counter][0] = $sor['archerLvl'];

    $troopArray[$counter][1] = $sor['giantLvl'];

    $troopArray[$counter][2] = $sor['wizardLvl'];

    $troopArray[$counter][3] = $sor['balloonLvl'];

    $troopArray[$counter][4] = $sor['dragonLvl'];

    $troopArray[$counter][5] = $sor['minionLvl'];

    $troopArray[$counter][6] = $sor['hogLvl'];

    $troopArray[$counter][7] = $sor['golemLvl'];

    $troopArray[$counter][8] = $sor['witchLvl'];

    $troopArray[$counter][9] = $row['ID'];

    $troopArray[$counter][10] = $row['Name'];
    $counter++;

  }
}

//------------------Writing the name into a new DIV------------------------
echo '<script type="text/javascript">';
echo 'var nameButton = document.createElement("input");';
echo 'nameButton.setAttribute("type","button");';
echo 'nameButton.setAttribute("value","' . $row['Name'] . '");';
echo 'nameButton.setAttribute("name","' . $row['ID'] . '");';
echo 'nameButton.style.backgroundImage="url(\"images/login_button/button_name.png\")";';
echo 'nameButton.style.marginLeft = "5px";';
echo 'nameButton.style.marginTop = "0px";';
echo 'nameButton.style.height="60px";';
echo 'nameButton.style.width="200px";';
echo 'nameButton.style.border ="none";';
echo 'nameButton.style.backgroundColor ="transparent";';
echo 'nameButton.style.fontWeight="900";';
echo 'nameButton.style.paddingLeft="50px";';
echo 'nameButton.style.textAlign="left";';
echo 'nameButton.onclick = function() 
                                    {

                                        TableDraw(' . $troopArray[0][0] . ',' . $troopArray[0][1] . ',' . $troopArray[0][2] . ',' . $troopArray[0][3] . ',' . $troopArray[0][4] . ',' . $troopArray[0][5] . ',' . $troopArray[0][6] . ',' . $troopArray[0][7] . ',' . $troopArray[0][8] . ',' . $troopArray[0][9] . ',' . $troopArray[0][10] . ');

                                    };';
echo 'document.body.appendChild(nameButton);';
echo '</script>';
echo '<br>';

 ?>

一切正常,直到 $troopArray[$counter][10] = $row['Name']; ,我什至稍后将其设置为按钮的文本时使用它。如果我将“名称”更改为“ID”,代码就会运行。

据我所知,我可以在 PHP 数组中存储任何类型的变量,因为它不是真正的数组。但为什么我似乎无法在整数中存储字符串?

最佳答案

我在您的代码中没有看到任何错误,但有一件事对我来说很奇怪:

$troopArray = array(array());

您应该将这一行简单地更改为:

$troopArray = array();

并检查问题是否仍然出现

还有一点是您的 $counter 始终为 0。这不会导致问题,但也许您还想在循环结束之前增加它?

编辑

如果问题仍然出现,您应该向我们展示整个循环代码(现在它在第一个循环后完成,也许稍后您在 $row 变量中更改某些内容

关于javascript - PHP 数组不会存储变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24532579/

相关文章:

php - 使用 PHP MySql 的高级新闻存档年/月

c# - 如何用lnq获取数据表中排序字段的总数?

mysql - 在查询中使用来自同一个 mysql 表的数据

javascript - Node Js - mssql 的 TransactionError (ENOTBEGUN)

javascript - 为什么数据不显示在 kendo ui 网格上

php - 为什么我不能包含博客?

php - MYSQL不会对BYDER变量进行排序

javascript - touchmove 事件并不总是在 Android 版 Chrome 上触发

javascript - 如何等到嵌套的异步 jQuery AJAX 请求完成?

php - 适用于嵌入式浏览器中网站的 Google OAuth