【问题标题】:Tables showing in phpmyadmin but not query + more表格在 phpmyadmin 中显示但不查询 + 更多
【发布时间】:2018-10-11 06:54:41
【问题描述】:

我仍然不熟悉从带有 php 的 html 网络表单到数据库的发布,但我认为我已经能够拼凑出我需要的一切。但是仍然缺少一些东西,我不知道是什么。

我测试了我的连接和表格:

<?php
  $link = mysqli_connect("localhost","#user","#password", "#database");
  if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
  }
  echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;
  echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;
  $test_query = "SHOW TABLES FROM" $#database;
  $result = mysqli_query($connect, $test_query);
  $tblCnt = 0;
  while($tbl = mysqli_fetch_array($result)) {
    $tblCnt++;
    #echo $tbl[0]."<br />\n";}
    if (!$tblCnt) {
        echo "There are no tables<br />\n";
    } else {
        echo "There are $tblCnt tables<br />\n";
    }
  mysqli_close($link);
?>

我尝试了 127.0.0.1 和访问主机 IP (RemoteMySQL) 无济于事。我的用户拥有完全权限。我不知道有任何其他默认安全措施可能会妨碍我。

我在 Bluehost 托管,使用 MySQL 和 phpmyadmin。我的数据库中有 2 个表,当我在 phpmyadmin 中键入“SHOW TABLES”时可以找到它们。我错过了什么?这超出了我的认知。我已经束手无策了……

非常感谢!

【问题讨论】:

  • 在 else 条件下您的代码有错误后,您缺少一个花括号。
  • 您在调用 mysqli_connect 后检查错误,但不是在随后的 mtsqli_ 调用之后(这会揭示问题)
  • 代码完全从模板复制来检查连接。我刚刚删除了敏感信息,并且(只是注意到)我更改了 SHOW TABLES 行。无论哪种方式,它都会返回相同的错误零表。 symcbean,你能指定什么是 mtsqli_calls 以及它们有什么帮助吗?我不确定我是否正确连接到错误,或者我创建的表是否实际上不可访问。谢谢!

标签: php phpmyadmin forms http-post


【解决方案1】:

我发现这一行有一些问题。

$test_query = "SHOW TABLES FROM" $#database; // Line 10

您没有任何名为 $database 的变量。而且你有不正确的符号#。 # 用于 cmets (http://php.net/manual/en/language.basic-syntax.comments.php)

FROM 后面少了一个空格。这一行应该是

$test_query = "SHOW TABLES FROM " . $database;

否则,生成的查询将是“SHOW TABLES FROMDATABASE_NAME”,这将触发 SQL 错误。

另外,您在 while 循环之后缺少一个花括号。这是更正后的完整代码。

<?php
$link = mysqli_connect("localhost","#user","#password", "#database");
if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
 }
 echo "Success: A proper connection to MySQL was made! The my_db 
 database is great." . PHP_EOL;
 echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;
 $database = "YOUR_DATABASE_NAME_HERE";
 $test_query = "SHOW TABLES FROM " . $database;
 $result = mysqli_query($link, $test_query);
 $tblCnt = 0;
 while($tbl = mysqli_fetch_array($result)) {
     $tblCnt++;
 }
 // echo $tbl[0]."<br />\n";}
 if (!$tblCnt) {
     echo "There are no tables<br />\n";
 } else {
     echo "There are $tblCnt tables<br />\n";
 }
 mysqli_close($link);
 ?>

希望对你有帮助。

【讨论】:

  • 我仍在学习表示代码(以及其中的注释)的正确方法。这就是“#”的原因。我认为您的代码与我找到并使用的模板相同。它仍然没有桌子返回。
  • 对不起@StevenGuerrero。我已经在本地环境下尝试过,现在应该会更好。我已经用正确的代码编辑了我的答案。在 mysqli_query 中,您使用了一个不存在的 $connect 变量,您应该改用 $link。我忘记了一个 . (连接运算符)在查询中使用数据库名称。
  • 不要忘记用我写“YOUR_DATABASE_NAME_HERE”的数据库名称和设置连接的行替换 :)
  • 做到了!谢谢你莱拉!
  • @StevenGuerrero 不客气!您介意接受答案,以便您可能遇到类似问题的人知道此解决方案有效吗? :)
猜你喜欢
  • 2012-09-15
  • 2011-02-18
  • 2013-02-05
  • 2018-06-06
  • 2016-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-01
相关资源
最近更新 更多