PHP - HTML 中的输出正确,但浏览器给出 500 内部服务器错误

标签 php html mysql

注意!刚刚开始使用 PHP,所以如果这是某种 n00b 错误,我提前道歉。我有一个 PHP 脚本,它从 MySQL 数据库读取一个表,并以下拉列表的形式提供单列的值。 PHP代码如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<?php
    $dbc = mysql_connect("localhost", "someDBuser", "somecorrectpass");
    $db = mysql_select_db("someDB");
    $results= mysql_query("SELECT name FROM sometable");
?>
<select name="eventid">
    <option value="0">Choose</OPTION>
    <?php
        while($row = mysql_fetch_array($results)) {
            echo '<option value="'.$row['name'].'">'. $row['name'].'</option>';
        }
    ?>
</select>
</form>
</body>
</html>

现在,当我从浏览器调用该文件时,我会看到一个空白屏幕。我启用了 PHP 错误报告并收到以下错误 Fatal error: Call to undefined function mysql_connect() in /var/www/html/testdel.php on line 12 .

接下来我尝试使用 PHP 命令在后端运行该文件。它运行良好,并给了我所需的 html 输出,如下所示:

$ php /var/www/html/testdel.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form method="post" action="/var/www/html/testdel.php">
<select name="eventid">
    <option value="0">Choose</OPTION>
    <option value="Ex1005">Ex1005</option><option value="Ex1009">Ex1009</option><option value="user1">user1</option></select> 
</form>
</body>
</html>

当我将此输出放入文件中(例如“testdel.html”)时,我得到了正确的输出。

我在原始 PHP 文件中做错了什么?是不是和权限有关?当前文件权限是 644。或者我需要包含(使用)某些模块吗?

最佳答案

第一

永远不要直接在页面中执行连接或 sql 指令,这样,这是一种非常糟糕的做法,当然也不安全。

例如,创建一个仅用于连接的文件/类,例如 connection.php然后他们调用该方法,例如:Connection::start(); .

对于 SQL 指令,执行相同的操作。创建您的类(class),例如:class SomeTable ,然后他们调用您需要的方法:SomeTable::getAll(); .

这只是一个例子。

第二个

使用PDO MySQL

可能出现的问题

检查您的分机是否php_mysql未注释并存在于您的 php.ini 中。在 UNIX 中,可能是这个 /etc/php/php.ini 。在 window 里我不知道。像这样:

extension=php_mysql.so
extension=php_pdo_mysql.so

或者,在 Windows 中:

extension=php_mysql.dll
extension=php_pdo_mysql.dll

为了确保这一点,创建一个文件,在你中创建一个文件DocumentRoot使用此代码 <?php phpinfo(); ?>并搜索 mysql--with-mysql 。例如:

  • /var/www/info.php 中创建文件
  • 编写此代码:<?php phpinfo(); ?>
  • 在您的浏览器中,调用此文件:http://localhost/info.php
  • 并搜索mysql

Image of phpinfo()

PDO - MySQL

<小时/>

如果您有任何意见,请在评论中告诉我。

抱歉我的英语。

关于PHP - HTML 中的输出正确,但浏览器给出 500 内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21285185/

相关文章:

php - 大文件 uploader

java - 使用套接字时在 HTML 页面中嵌入 Java JApplet

javascript - 如何让 Mac 平滑滚动以在元素上工作

php - 比较来自 MySQL 表和日志文件的数据

php - 在 Windows 7 中的 wamp 上安装 SuiteCRM 时出错

php - 使用 php mysql 和 inner join 重复结果

php - 执行 mysqli 插入查询然后立即选择新行的 ID

php - 更新一行,但如果行在 codeigniter 中不存在则插入

html - 如何优化此随机播放列表html5音频脚本

java - Mysql连接器j错误