【问题标题】:Cannot connect to Database with mysqli, mysqli_connect, or PDO无法使用 mysqli、mysqli_connect 或 PDO 连接到数据库
【发布时间】:2012-07-16 21:10:44
【问题描述】:

我曾尝试将 php 连接到我的数据库,但完全不成功;(我不断收到类似:“PHP 通知:未定义变量:conn”之类的信息,我尝试了以下各项:

$conn = new PDO("mysql:host=localhost;dbname=ar_data", 'login', 'pass');
$conn = mysqli('localhost', 'login', 'pass', 'dbname') or die("error" :.mysqli_connect_error());
$conn = mysqli_connect('localhost', 'login', 'pass', 'ar_data') or die("error" :.mysqli_connect_error());

在我尝试了最后一个之后,我在var_dump($conn) 上得到了这个:

object(mysqli)#17 (18) { ["affected_rows"]=> int(0) ["client_info"]=> string(78) 
"mysqlnd 5.0.8-dev - 20102224 - $Id: SOME_VALUE_I_AM_CENSORING $" 
["client_version"]=> int(50008) ["connect_errno"]=> int(0) ["connect_error"]=> NULL 
["errno"]=> int(0) ["error"]=> string(0) "" ["field_count"]=> int(0) ["host_info"]=> 
string(20) "localhost via TCP/IP" ["info"]=> NULL ["insert_id"]=> int(0) ["server_info"]=>
string(6) "5.5.25" ["server_version"]=> int(50525) ["stat"]=> string(140) "Uptime: 477847 
Threads: 6 Questions: 202259 Slow queries: 1 Opens: 1454 Flush tables: 1 Open tables: 10 
Queries per second avg: 0.423" ["sqlstate"]=> string(5) "00000" 
["protocol_version"]=> int(10)
["thread_id"]=> int(1506) ["warning_count"]=> int(0) }

我还尝试使用对 ar_data 数据库没有权限的用户,它会按预期给我一个错误。如果我在mysqli_prepare($conn, $sql) 之前执行var_dump($conn),那么它将打印NULL。如何连接到数据库?

注意:我已将名称从 conn 更改为其他 var,以防它发生更改但行为仍然相同。我还安装了 Drupal 7 和 Wordpress(我想他们只是使用基本的 msql 进行连接)

更新:

整个文件:https://dl.dropbox.com/u/6688861/phpconn.txt

【问题讨论】:

  • 您可能遇到范围问题。

标签: php pdo mysqli


【解决方案1】:

最后一个var_dump 表示连接工作正常。您的问题是您在 ValidateForm() 函数中引用了 $conn 而没有在该函数中声明 global $conn

【讨论】:

  • 我有一个绑定参数:mysqli_stmt_bind_param($stmt, 'ssssssissssssssss', $lname, $fname, $email, $addr, $city, $state, $zip, $phone, $affiliation, $prof_role, $_SERVER['REMOTE_ADDR'], enum($abc), enum($ace), enum($carr), enum($ema), enum($tuac), enum($last)); enum() 函数可能是个问题吗?
  • enum() 不是标准的 PHP 函数,但这不是你的问题……你的问题确实是缺少 global
  • 不,不是。连接被声明为页面顶部,在任何函数之外。
  • 对,这意味着您需要在任何引用它的函数中使用global $conn。否则,假定您指的是一个名为 $conn 的单独局部变量。
  • 我可以拥抱你。我在这上面花了 4 个半小时,没有其他人知道。
【解决方案2】:

您的连接在最后一个结果中很好。如果您的连接不起作用,您将无法取回 MySQL 服务器信息。您在哪里得到与此调用相关的未定义变量错误?了解更多上下文可能会有所帮助。

【讨论】:

  • 在 $stmt = mysqli_prepare($conn, $sql);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
  • 2017-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
  • 2018-05-15
相关资源
最近更新 更多