开发者

PHP error when using mysql related functions

I have another script that I can't figure out what is wrong with it. I attempted to use the

error_reporting(E_ALL);

to report the errors, but it doesn't report anything. Anyway, here is the code I'm having trouble with.

<?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");
?>

I have looked over this code for a while now. Can't seem to get the error reporting to work, so here I am again. Thanks to everyone who has helped, and who will help!


By Request of @Klinky:

When attempting to use this page (named myinfo.php ) in Opera, it displays the default message indicating that it is not able to find the page and/or the server. In Internet Explorer 8, it displays a 500 Internal Server Error.

Here are the server specs: OS: Linux HTTP: Apache v2.0.63 PHP:开发者_C百科 5.3.3 MySQL: 5.0.91-community


I looked in the logs, and this is the error message:

[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

The only thing is, the database I tried to select does exist!


All your UPDATE queries are missing table name:

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

I would suggest, every time you call mysql_query() check its return value. If its false, the query execution failed and you can get the cause of failure by calling mysql_error()

$result = mysql_query($query);
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

More errors:

You need to enclose strings in single quotes in a query:

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

Do it everywhere you are using a string in the query.


There is no builtin function name mysql_select_database. I guess you meant mysql_select_db

Change

mysql_select_database("zach_blogin", $con);

to

mysql_select_db("zach_blogin", $con);


Try setting the full URL for snippet:

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

HTTP spec says you should use the full url when doing a redirect. Though many browsers support a relative path. Try:

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

REPLACE /project-path/ with the full path to where your .php files are.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜