当心!我只是从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。还是我需要包括(使用)某些模块?
发布于 2014-01-22 14:17:57
第一
从不在页面中直接执行连接或指令,就像这样,这是一个糟糕的实践,当然也不安全。
例如,创建一个仅用于连接的文件/类,比如connection.php,它们调用该方法,例如:Connection::start();。
对于SQL说明,也可以这样做。创建类,例如:class SomeTable,它们调用所需的方法:SomeTable::getAll();。
只是个例子。
第二
可能出现的问题
检查您的扩展php_mysql是否未注释,是否存在于php.ini中。在UNIX中,也许这个/etc/php/php.ini。在窗户里我不知道。就像这样:
extension=php_mysql.so
extension=php_pdo_mysql.so或者,在Windows中:
extension=php_mysql.dll
extension=php_pdo_mysql.dll为了确保这个,创建一个文件,用这个代码<?php phpinfo(); ?>在DocumentRoot中创建一个文件,然后搜索mysql或--with-mysql。例如:
/var/www/info.php中创建文件<?php phpinfo(); ?>http://localhost/info.php


如果你有任何意见,请在评论中告诉我。
为我的英语道歉。
发布于 2014-01-22 14:29:35
尝试使用以下代码
<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
$db = new mysqli('hostname', 'root', 'root', 'db_name');
if($db->connect_errno > 0)
{
die('Unable to connect to database [' . $db->connect_error . ']');
}
$sql = 'SELECT name FROM sometable';
if(!$result = $db->query($sql))
{
die('There was an error running the query [' . $db->error . ']');
}
?>
<select name="eventid">
<option value="0">Choose</OPTION>
<?php
while($row = $result->fetch_assoc())
{
echo '<option value="'.$row['name'].'">'. $row['name'].'</option>';
}
?>
</select>
</form>
</body>
</html>现在使用的是mysql_i,而不是现在不推荐的mysql_。
如果您可以通过SSH访问您的服务器,您可能还需要安装php-mysql,类似的问题请参见本答案。
发布于 2014-01-22 14:59:14
你可以采取这些措施来发现/解决你的问题。这可能对你有帮助。
并将其加载到浏览器中。它将显示环境加载的配置。在页面中搜索MySQL。如果您没有看到它,则需要使用MySQL支持重新编译PHP,或者重新安装内置的package。
https://stackoverflow.com/questions/21285185
复制相似问题