|
Posted by Bruce Douglas on 02/05/05 20:16
sarah...
rather than deal with classes/objs... (at least initially)
just create a simple php/mysql app that sets up the user/passwd/host for the db, and see if you can do a successful mysql_connect.... check the return/error codes to see if the call/code works
this will quickly tell you if you actually have php/mysql setup properly...
once you've done this... you can get into the guts of your app, to determine where the prob is....
-bruce
-----Original Message-----
From: Sarah <weregirl@vitamortalis.org>
Sent: Feb 5, 2005 7:41 AM
To: php-general@lists.php.net
Subject: [PHP] Problems with PHP and MySQL
Hi,
I'm relatively new to PHP, but have already written a few functional
web-based scripts. I recently decided to implement a MySQL-based system,
but hit the following problem...
I have PHP version 5.03, and MySQL v 4.19. I downloaded and compiled
both, and both work perfectly alone. However, when I run a command-line
app to manipulate my database, I get the following error:
__________________________________________________________________________
veep@tinsel:~# ./useradmin -a -u unclebulgaria -p uberwomble
constructor called
Fatal error: Call to undefined function mysql_connect() in
veep/useradmin on line 16
Fatal error: Call to undefined function mysql_close() in /veep/useradmin
on line 22
veep@tinsel:~#
__________________________________________________________________________
You might think 'Aah! the doofus has forgotten to link MySQL into the
compiled PHP interpreter'.
However, my phpinfo() page gives the following information:
__________________________________________________________________________
Configure command:
'./configure' '--with-apxs2=/opt/apache/sbin/apxs' '--prefix=/usr'
'--sysconfdir=/etc/php5' '--with-dba' '--with-db4' '--with-auth'
'--with-zlib' '--with-tiff' '--with-jpeg' '--with-mysql=/usr'
__________________________________________________________________________
And...
__________________________________________________________________________
MySQL-related data:
mysql
MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 4.1.9
MYSQL_MODULE_TYPE external
MYSQL_SOCKET /tmp/mysql.sock
MYSQL_INCLUDE -I/usr/include/mysql
MYSQL_LIBS -L/usr/lib -lmysqlclient
Directive Local Value Master Value
mysql.allow_persistent On On
mysql.connect_timeout 60 60
mysql.default_host localhost localhost
mysql.default_password wurms wurms
mysql.default_port 3306 3306
mysql.default_socket no value no value
mysql.default_user wiggly wiggly
mysql.max_links Unlimited Unlimited
mysql.max_persistent Unlimited Unlimited
mysql.trace_mode Off Off
_________________________________________________________________________
Finally, the client program is:
_________________________________________________________________________
#!/usr/bin/php
<?php
class UserDB
{
static $user='wiggly';
static $pass='wurms';
static $db='multimedia_access';
private $m_link;
private $m_live;
function __construct()
{
print("constructor called\n");
$this->m_link = mysql_connect('localhost', self::$user, self::$pass);
$this->m_live = mysql_select_db(self::db);
}
function __destruct()
{
mysql_close($this->m_link);
print("destructor called");
}
function Add($u, $p)
{
$H = md5($u, true);
// $R = mysql_query("INSERT INTO users (userkey, user, password)
values ($H, $u, $p)", $this->m_link);
$S = mysql_real_escape_string("INSERT INTO users (userkey, user,
password) values ('$H', '$u', '$p')", $this->m_link);
$R = mysql_query($S, $this->m_link);
if (!$R)
{
printf("SQL query error during Add operation\n");
}
return $R;
}
function Delete($u)
{
$H=md5($u, true);
$R=mysql_query("DELETE FROM users WHERE userkey=$H");
if ($R)
{
$R=mysql_query("DELETE FROM iplist WHERE userkey=$H");
}
if (!$R)
{
printf("SQL query error during Add operation\n");
}
return $R;
}
function Replace($u, $p)
{
return 0;
}
function Tabulate()
{
$R=mysql_query("SELECT user,password FROM TABLE users");
if (!$R)
{
printf("SQL query error during List operation\n");
}
$N=mysql_num_rows($R);
if ($N > 0)
{
while($Row = mysql_fetch_row($R))
{
foreach($Row as $K => $V)
{
$Col = mysql_field_name($R ,$K);
printf("%s='%s', ", $Col, $V);
}
printf("\n");
}
}
return $R;
}
}
function Usage($text)
{
printf("useradmin:\n\tuseradmin (-a|-d|-r) -u <user name> -p
<password>\n\n");
printf("\t-a - add given user.\n");
printf("\t-d - delete given user.\n");
printf("\t-r - replace given user.\n");
printf("\t-l - list all users and passwords in the database.\n");
printf("\n\t%s\n\n", $text);
exit(0);
}
function do_add($u, $p)
{
$D=new UserDB();
return $D->Add($u, $p);
}
function do_del($u)
{
$D=new UserDB();
return $D->Delete($u);
}
function do_rep($u, $p)
{
$D=new UserDB();
return $D->Replace($u, $p);
}
function do_list()
{
$D=new UserDB();
return $D->Tabulate();
}
function main()
{
$password='';
$username='';
$command['a']=false;
$command['d']=false;
$command['r']=false;
$command['l']=false;
$cmdcount=0;
$opt = getopt("ladru:p:h");
foreach ($opt as $k => $v)
{
switch($k)
{
case 'h':
Usage("Help information.");
break;
case 'p':
if ($v)
{
$password=$v;
}
break;
case 'u':
if ($v)
{
$username=$v;
}
break;
case 'a':
$command[$k]=true;
$cmdcount += 1;
break;
case 'd':
$command[$k]=true;
$cmdcount += 1;
break;
case 'r':
$command[$k]=true;
$cmdcount += 1;
break;
case 'l':
$command[$k]=true;
$cmdcount += 1;
break;
default:
}
}
if ($cmdcount > 1)
{
Usage("You may specifiy no more than one command at a time");
}
else if ($cmdcount < 1)
{
Usage("You must specify one of add, delete, replace");
}
if ($command['a'] == true)
{
if ($username == false || $password == false)
{
Usage("You must specify the username and password when adding an user");
}
do_add($username, $password);
}
else if ($command['r'] == true)
{
if ($username == false || $password == false)
{
Usage("You must specify the username and password when replacing an
user");
}
do_del($username);
}
else if ($command['d'] == true)
{
if ($username == false)
{
Usage("You must specify the username when deleting an user");
}
else if ($password != false)
{
Usage("The password is superfluous for the delete comand");
}
do_rep($username, $password);
}
else if ($command['l'] == true)
{
if ($username != false || $password != false)
{
Usage("Superfluous arguments given to the list command");
}
do_list($username, $password);
}
exit(0);
}
main();
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Navigation:
[Reply to this message]
|