0
  1. 我很难在没有任何输入的情况下请求处理 php 文件。我在 login.php 中使用 PDO 我得到的错误是“无法加载 processing.php,状态:500”。

main.php:-

<head>
    <?php require_once '../scripts/login.php';?> //require action
<head>
<body>
<div id='line1'></div>

require(["dojo/request","dojo/domReady!"],                      
function(request)
{ready(function()
    {request('processing.php').then( //request action
     function(response){dom.byId(line1).innerHTML=response;},
     function(error){alert(error);
 });
    ......
</body>

处理.php:-

<?php
    echo "By default, fetch mk7BC data<br/>";
echo 
"<table border='1' cellspacing='0' cellpadding='2'>
<tr style='background-color:lightblue; font-weight:normal; font-size:small;'>
    <th style='width:40px'>ID</th>
    <th style='width:80px'>SN</th>
    <th style='width:100px'>Tested</th>
    <th style='width:40px'>Jig</th>
    <th style='width:80px'>Card</th>
    <th style='width:40px'>Batch</th>
    <th style='width:40px'>COM</th>
    <th style='width:40px'>3rdCOM</th>
    <th style='width:40px'>IO34</th>
    <th style='width:40px'>Comment</th>
</tr>";
    try
    (
        $dbh-> query('use testdata1970_10');
    $color='1';     
        foreach($dbh->query('call getallusers();') as $row)
        {if($color==1)
    {echo "<tr style='background-color:lightyellow; font-weight:lighter; 
            font-size:x-small;'>";
    $color='2';
        }
    else
            {echo"<tr style='background-color:lightgreen; font-weight:lighter;
            font-size:x-small;'>";
    $color='1';
    }

        echo
        "<td>{$row['idtest']}</td>
        <td>{$row['SN']}</td>
        <td>{$row['time_tested']}</td>
        <td>{$row['id_jig']}</td>
        <td>{$row['mfg_code']}</td>
        <td>{$row['batch_no']}</td>
        <td>{$row['com_status']}</td>
        <td>{$row['3rdcom_status']}</td>
        <td>{$row['IO34_status']}</td>
        <td>{$row['comment']}</td>
        </tr>";
            }
     echo "</table>";
    )
 ?>

登录.php:-

    <?php
         dbname=testdata1970_10;
     $dsn = 'mysql:host=localhost; Port=3306';
     $user = 'root';
     $pswd = '';
     $dbh = new PDO($dsn, $user, $pswd,
         array(PDO::ATTR_PERSISTENT, TRUE));
         $dbh->setAttribute(PDO::ATTR_ERRMODE, 
         PDO::ERRMODE_EXCEPTION);
     $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
 ?>

请告知谢谢克莱门特

4

2 回答 2

0

Stackoverflow 非常适合特定的“我该怎么做 X?” 问题。“这是我所有的代码,帮我找出错误!”不是很好。您需要努力自己找出问题所在,然后提出具体问题。

例如,您的 Javascript 有问题吗?还是你的PHP有问题?也许你的 SQL 有问题?

在这种情况下,您说打开 processing.php 返回错误 500。这意味着该错误可能与您的 Javascript 没有任何关系。相反,它可能是您的 Web 服务器在运行您的 PHP 脚本时遇到问题。

processing.php 有什么问题?它有任何语法错误吗?当您在浏览器中打开 processing.php 时,您可能会收到一条带有一些线索的不错的错误消息。或者您的文本编辑器可能会突出显示错误?如果没有,请尝试运行

php -l processing.php

这会检查您的文件是否存在语法错误。你可能会得到类似的东西:

PHP Parse error:  syntax error, unexpected '(', expecting '{' on line 18

看起来你需要用({18行替换!

所以你php -l再次修复它,你在第 47 行看到相同的错误(几乎)。修复它。重复。看起来你有一个try没有对应的catch!修复它。重复。

最后,也许你仍然有问题——但现在你已经努力定位问题,你可以提出一个更好的问题。

例如,processing.php 中的 $dbh 是从哪里来的?您是否在 processing.php 的顶部包含 login.php?

于 2013-02-19T11:43:06.330 回答
0

感谢您的输入。现在一切都奏效了。$dbh 来自 login.php,我在 main.php 和 processing.php 中需要一次 login.php。但是,我不明白为什么 login.php 需要在 processing.php 中再次被要求,因为 login.php 中的脚本可用于 main.php 中的所有脚本。由于 $dbh 在 login.php 中的全局范围内,而 login.php 是 require_once,因此我会在 main.php 中 require_once login.php,而不是 processing.php。例如;

login.php - <?php $dbh="blah"?>
main.php - <?php require_once login.php?>
A.php - <?php $dbh... ?>
B.php - <?php $dbh... ?>
C.php - <?php $dbh... ?> 

等等。我只想让 login.php 一劳永逸地可用,而不是在每个脚本中重复 require_once 。我读到“当一个文件被包含时,它包含的代码继承了包含发生的行的变量范围。从那时起,调用文件中该行中可用的任何变量都将在被调用文件中可用。 " 在 PHP.net 中。如果我错了,请纠正。谢谢克莱门特

于 2013-02-20T03:37:16.127 回答