已建立到mariadb服务器的连接,但无法将数据导入数据库?

kxeu7u2r  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(370)

以下是整个php代码:

<html>
<head>
   <title>Connect to MariaDB Server</title>
</head>

<body>
  <?php
     $dbhost = 'localhost';
     $dbuser = 'test';
     $dbpass = 'pass';
     $dbname = 'databseName';
     $conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);

     if(! $conn ) {
        die("Connection failed: " . mysqli_connect_error());
     }

     echo "Connected successfully<br><br>";

     function add($url, $category){
         $sql = "INSERT INTO tt (url, category) VALUES ('$url', '$category');";
         if(mysqli_query($conn, $sql)){
             echo "Recorded.";
         } else {
             echo "Error: " . $sql . "<br>" . mysqli_error($conn);
             }
      }

      if(function_exists($_GET['f'])){
         $_GET['f']($_GET['url'], $_GET['cat']);
      }

      mysqli_close($conn);
   ?>
</body>
</html>

当我输入时“http://localhost/connect.php?f=add&url=www.google.com&cat=google“在我的浏览器中,结果如下:

Connected successfully

Error: INSERT INTO tt (url, category) VALUES ('www.google.com', 'google');
Notice: Undefined variable: conn in /var/www/html/connect.php on line 24

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /var/www/html/connect.php on line 24

Fatal error: Uncaught Error: Call to undefined function mysqli_errot() in /var/www/html/connect.php:27 Stack trace: #0 /var/www/html/connect.php(32): add('www.google.com', 'google') #1 {main} thrown in /var/www/html/connect.php on line 27

我在网上找到了很多其他可能的解决方案,但都不管用。请帮忙,谢谢!

70gysomp

70gysomp1#

你的职责是:

function add($url, $category) {
    // code
}

您正在尝试使用该变量 $conn . 在函数外部定义。
应将该变量传递到函数中:

function add($url, $category, &$conn) {
    // code
}

if(function_exists($_GET['f'])){
    $_GET['f']($_GET['url'], $_GET['cat'], $conn);
}

你可以用 global $conn; 函数内部,但建议避免使用 global 完全是。在更大的项目中,它会造成混乱和危险的代码条件。更少的控制。通过引用传递$conn,可以明确地确保使用正确的值。
另请注意:准备好的语句很适合用于sql,因为您输入的值中可能包含恶意sql。
顺便说一句:您正在进行的整个过程看起来有点不稳定,应该注意白名单函数名和设置。你也可以把它移到一个班上。

相关问题