以下是整个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
我在网上找到了很多其他可能的解决方案,但都不管用。请帮忙,谢谢!
1条答案
按热度按时间70gysomp1#
你的职责是:
您正在尝试使用该变量
$conn
. 在函数外部定义。应将该变量传递到函数中:
你可以用
global $conn;
函数内部,但建议避免使用global
完全是。在更大的项目中,它会造成混乱和危险的代码条件。更少的控制。通过引用传递$conn,可以明确地确保使用正确的值。另请注意:准备好的语句很适合用于sql,因为您输入的值中可能包含恶意sql。
顺便说一句:您正在进行的整个过程看起来有点不稳定,应该注意白名单函数名和设置。你也可以把它移到一个班上。