php5.0连不上mysql5(也不知道是不是这个原因)

edited 十月 2013 in PHP新手區
我的在winxp+sp2上装的mysql5和php5,用的是apache2,但在php里用
$db = new mysqli('localhost', 'bookorama', 'bookorama123', 'books')无法连上mysql5数据库,程序运行都正常,也能显示Book-O-Rama Catalog Search这些东西,但就是运行到这句就突然停止了,没有任何提示,用mysql_error()也显示不出来任何信息。
mysql在xp的dos窗口下使用(建库,增删等等)一切正常。
是用search.html来调用results.php的
以下是程序:
search.html
<html>
<head>
<title>Book-O-Rama Catalog Search</title>
</head>
<body>
<h1>Book-O-Rama Catalog Search</h1>
<form action="results.php" method="post">
Choose Search Type:<br />
<select name="searchtype">
<option value="author">Author</option>
<option value="title">Title</option>
<option value="isbn">ISBN</option>
</select>
<br />
Enter Search Term:<br />
<input name="searchterm" type="text">
<br />
<input type="submit" value="Search">
</from>
</body>
</html>
************************
(results.php)
<html>
<head>
<title>Book-O-Rama Search Results</title>
</head>
<body>
<h1>Book-O-Rama Search Results</h1>
<?php

// create short variable names
$searchtype=$_POST;
$searchterm=$_POST;
$searchterm= trim($searchterm);
if (!$searchtype || !$searchterm)
{
echo 'You have not entered search details. Please go back and try again.';
exit;
}

if (!get_magic_quotes_gpc())
{
$searchtype = addslashes($searchtype);
$searchterm = addslashes($searchterm);
}
//就是下面这句!!!
$db = new mysqli('localhost', 'bookorama',
'bookorama123', 'books');
if (mysqli_connect_errno())
{
echo 'Error: Could not connect to database. Please try again later.';
exit;
}
$query = "select * from books where ".$searchtype." like '%".$searchterm."%'";
$result = $db->query($query);
$num_results = $result->num_rows;
echo $num_results;

echo '<p>Number of books found: '.$num_results.'</p>';
for ($i=0; $i <$num_results; $i++)
{
$row = $result->fetch_assoc();
echo '<p><strong>'.($i+1).'. Title: ';
echo htmlspecialchars(stripslashes($row));
echo '</strong><br />Author: ';
echo stripslashes($row);
echo '<br />ISBN: ';
echo stripslashes($row);
echo '<br />Price: ';
echo stripslashes($row);
echo '</p>';
}

$result->free();
$db->close();
?>
</body>
</html>

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=913

評論

  • edited 十月 2005
    請先花點時間看看安裝時的注意事項吧:
    http://www.php.net/mysqli
  • edited 十月 2005
    谢谢kiang的回复,我安php 和mysql的时候都是下载的编译好的安装程序,不知道php有没有支持sqli,也看你推荐的文档,以自己可怜的英语看的迷迷糊糊,我找到php.ini里mysqli的部分,请你看看,我的php是否支持mysqli.
    [MySQLI]

    ; Maximum number of links. -1 means no limit.
    mysqli.max_links = -1

    ; Default port number for mysqli_connect(). If unset, mysqli_connect() will use
    ; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
    ; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
    ; at MYSQL_PORT.
    mysqli.default_port = 3306

    ; Default socket name for local MySQL connects. If empty, uses the built-in
    ; MySQL defaults.
    mysqli.default_socket =

    ; Default host for mysql_connect() (doesn't apply in safe mode).
    mysqli.default_host =

    ; Default user for mysql_connect() (doesn't apply in safe mode).
    mysqli.default_user =

    ; Default password for mysqli_connect() (doesn't apply in safe mode).
    ; Note that this is generally a *bad* idea to store passwords in this file.
    ; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw")
    ; and reveal this password! And of course, any users with read access to this
    ; file will be able to reveal the password as well.
    mysqli.default_pw =

    ; Allow or prevent reconnect
    mysqli.reconnect = Off
  • edited 十月 2005
    我並沒有自行編譯 Windows 環境的 Apache, MySQL or PHP,也沒有在 Windows 環境使用 mysqli ,可能要看看其他朋友幫不幫的上忙了。
  • edited 十月 2005
    他不是自己編譯的吧?
    如果是用zip的安裝,
    php.ini 加上 extension=php_mysqli.dll
    php_mysqli.dll 有在 ext 目錄裡面, 只是沒出現在 php.ini 裡.
  • edited 十月 2005
    恩,剛剛打瞌睡,看走眼了 ^^||
  • edited 十月 2005
    先谢谢这么晚了还帮忙!
    我在\php\ext\下找到了php_mysqli.dll,然后就在php.ini里加入了extension=php_mysqli.dll,重启机器,提示错误
    具体错误信息:
    PHP Starup: Unable to load dynamic library './php_mysqli.dll' -找不到指定的模块

    我又试着加了路径,还是错误,又把路径加上双引号,也是错误,晕了,我看php.ini里其它的都是直接写上extension=库名字,没有路径也没有引号

    难道还加外装相应的东西,要是需要装,那怎么个装法?
  • edited 十月 2005
    我把php_mysqli.dll拷贝到system32下,重启机后不再出现错误提示,但程序还是运行到$db = new mysqli('localhost', 'bookorama', 'bookorama123', 'books')停止!
  • edited 十月 2005
    xtjlsj 寫道:
    我把php_mysqli.dll拷贝到system32下,重启机后不再出现错误提示,但程序还是运行到$db = new mysqli('localhost', 'bookorama', 'bookorama123', 'books')停止!

    剛剛發言有很大的錯誤,所以把他刪了 ├004┤

    身邊沒有環境所以也沒辦法測.
    假如不使用class mysqli,直接使用mysqli_connect的function執行一樣會有錯誤嗎?
  • edited 十月 2005
    回sam0228:一样的结果,但是问题今天突然解决了,不知道为啥???

    虽然没找到确切的原因,但现在已经好用了。
    可能的问题是:
    1在php.ini里没有加载extension=php_mysqli.dll
    2没有指明php_mysqli.dll所在目录。extension_dir="d:\php5\ext"
    只想到了这些,不知是不是,但是昨天我也做这些了呀,WHY!!!


    还有一个问题,我为什么不能编辑我最上面的那个帖子呢?还是有办法,而我没有找到呢?
  • edited 十月 2005
    討論區的文章在發布一段時間後就無法再編輯。
  • edited 十月 2005
    程式修編後有二個動作要注意
    1.重新啟動apache.
    2.有修編到php時在win環境下要重新開機才能認識新架構.
  • edited 十月 2006
    我也碰到同樣的問題,原來的環境是MySQL4+PHP4,使用起來都正常,但是因為想要使用MySQL 5的View與Store Procedure,所以就在另一台乾淨的server上安裝MySQL 5.0+PHP 5(Apache 2.0.59);
    可是我在php.ini中extension=php_mysqli.dll也加了,也確定php_mysqli.dll在php.exe相同目錄與Windows\system32下都有,可是mysql_connect()卻是怎麼樣也無法連結,可是改成用MySQL Administrator這個工具卻能順利連上MySQL5,誰可以告訴我到底是哪裡還需要更改設定,先謝謝了。
  • edited 十月 2006
    另外再描述無法連接的訊息
    Fatal error: Call to undefined function mysql_connect() in .......
    看訊息好像是無法解析mysql_connect這個指令,但是我run phpinfo()是可以work的,所以我猜會不會是PHP沒有載入php_mysqli.dll這個extension,可是我php.ini有設定正確,檔案位置也都OK,但phpinfo看不到與MySQL相關的訊息,所以我也不確定載入正不正常。
  • edited 十月 2006
    mysqli跟mysql是不一樣的兩個dll
    你讓php抓mysqli卻想使用mysql?
  • edited 十月 2006
    抱歉,我漏了說明,我使用過php_mysql.dll(同時改過php.ini的extension與程式的mysql_connect,並重開機)以及php_mysqli.dll(也做過與php_mysql.dll的相同動作),但結果都是一樣的,所以我才會發這個問題,我相信應該也會有人碰到與我相同的問題吧。
  • edited 十月 2006
    這情況感覺應該是php沒有載入mysql相關的dll
    有試過修改
    extension_dir = "./"
    這邊嗎?
    雖然感覺跟copy dll到php.exe相同目錄是一樣道理....
  • edited 十月 2006
    很不幸的, php.ini中是有這行的指定, 所以不知php5在載入MySQL5的dll過程中, 還有哪些需要注意設定的地方.
  • edited 十月 2006
    你可以看一下php的install.txt這個檔案
    裡面會提到很多相關須要注意的地方
Sign In or Register to comment.