使用mysql相关函数时出现PHP错误

时间:2010-09-26 03:14:21

标签: php mysql

我有另一个脚本,我无法弄清楚它有什么问题。我试图使用

error_reporting(E_ALL);

报告错误,但不报告任何内容。无论如何,这是我遇到问题的代码。

<?php
error_reporting(E_ALL);
$username = $_POST['user'];
$email = $_POST['email'];
$password = md5($_POST['pass']);
$currname = $_COOKIE['ZBrownTechnologyCorporationBeta'];

$con = mysql_connect("HOST", "USER", "PASS");
if (!$con) {
  die('Unable to connect: '.mysql_error());
}

mysql_select_database("zach_blogin", $con);

if(empty($password)) {
  $nothing = "nothing";
} else {
  mysql_query("UPDATE members SET password = '$password' WHERE username = '$currname'");
}


mysql_query("UPDATE members SET Email = '$email' WHERE username = '$currname'");

if($username==$currname) {
  $nothing = "nothing";
} else {
  $query = ("SELECT username from members WHERE username = '$username'");
  $result = mysql_query($query);
  if (!$result) {
    header("Location: " . $_SERVER['HTTP_HOST'] . "/public_html/Beta/account.php?invalid");
    exit;
  }
}
mysql_query("UPDATE members SET username = '$username' WHERE username = '$currname'");
header("Location: ". $_SERVER['HTTP_HOST'] . "/public_html/Beta/main_login.php?update");
?>

我已经查看了这段代码了一段时间了。似乎无法让错误报告工作,所以我在这里。感谢所有帮助过的人,以及谁将提供帮助!


请求@Klinky:

当尝试在Opera中使用此页面(名为myinfo.php)时,它会显示默认消息,指示它无法找到页面和/或服务器。在Internet Explorer 8中,它显示500内部服务器错误。

以下是服务器规格: 操作系统: Linux HTTP: Apache v2.0.63 PHP: 5.3.3 MySQL: 5.0.91-community


我查看了日志,这是错误消息:

[Sat Sep 25 21:34:08 2010] [error] [client 68.52.52.190] PHP Fatal error:  Call to undefined function mysql_select_database() in /home/zach/public_html/Beta/myinfo.php on line 12, referer: http://zbrowntechnology.com/Beta/account.php

唯一的是,我试图选择的数据库确实存在!

3 个答案:

答案 0 :(得分:6)

您的所有UPDATE个查询缺少表名

UPDATE TABLE_NAME SET .....
          ^^^^^
         missing

我建议,每次打电话给mysql_query()检查其返回值。如果是false,则查询执行失败,您可以通过调用mysql_error()

来查明失败原因
$result = mysql_query($query);
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

更多错误:

您需要在查询中用单引号括起字符串:

mysql_query("UPDATE members SET password = '$password'....
                                           ^         ^
                                             missing

在查询中使用字符串的任何地方都可以。

答案 1 :(得分:4)

没有内置函数名mysql_select_database。我想你的意思是mysql_select_db

更改

mysql_select_database("zach_blogin", $con);

mysql_select_db("zach_blogin", $con);

答案 2 :(得分:0)

尝试设置代码段的完整网址:

header("Location: account.php?invalid");

HTTP规范说你应该在进行重定向时使用完整的URL。虽然许多浏览器支持相对路径。尝试:

header('Location: ' . $_SERVER['HTTP_HOST'] . '/project-path/account.php?invalid');

REPLACE / project-path /以及.php文件所在的完整路径。