gpt4 book ai didi

php - undefined variable 错误

转载 作者:行者123 更新时间:2023-11-29 08:37:51 25 4
gpt4 key购买 nike

所以我正在开发一个项目,并且遇到了一些 mysql 和 php 错误。

第一个错误:

这是与第一个错误相关的所有代码

// Database Class 

class Database {
public $_link, $_result, $_numRows;

public function __construct($server, $username, $password, $db){
$this->_link = mysql_connect($server, $username, $password) or die('Cannot Execute:'. mysql_error());
mysql_select_db($db, $this->_link);
}

public function disconnect(){
mysql_close($this->_link);
}

public function query($sql){
$this->_result = mysql_query($sql, $this->_link) or die('Cannot Execute:'. mysql_error());
$this->_numRows = mysql_num_rows($this->_result);
}

public function numRows() {
return $this->_numRows;
}

public function rows(){
$rows = array();
for($x = 0; $x < $this->numRows(); $x++) {
$rows[] = mysql_fetch_assoc($this->_result);
}
return $rows;
}

}

// Setup.php

$is_set = 'false';
global $company_name, $ebay_id;
if( isset($_POST['ebay_id'], $_POST['company_name']) ){
$_ebay_id = $_POST['ebay_id'];
$_company_name = $_POST['company_name'];
$is_set = 'true';
} else {
// Silence is Golden!
}

$_service_database = new Database('localhost', 'root', 'password', 'chat-admin');

$_service_database->query("SELECT * FROM installs WHERE `identity` = '$mysqldb' AND `db_name` = '$mysqldb'");


if ($_service_database->numRows() == 0){
if($is_set == true){
$_service_database->query("INSERT INTO installs (ebay_id, name, db_name, identity) VALUES ('$_ebay_id', '$_company_name', '$mysqldb', '$mysqldb')");
}
} else {
// header("Location: index.php");
}
$_service_database->disconnect();

?>

<form name="setup" method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<input placeholder="eBay Username" type="text" name="ebay_id">
<input placeholder="Company Name" type="text" name="company_name">
<input type="hidden" name="insert" value="true">
<input type="submit">
</form>

所以它的作用是检查定义的变量是否在数据库中,如果不在数据库中,那么当提交表单时,它会插入我们的值,如果它们在数据库中,它会重定向到index.php,好的,所以我正在接收全能的 MySQL num_rows* 期望参数 1 是资源,给定 bool 值...,现在我到处搜索,只发现 die 错误应该解决,这就是为什么你可以在函数查询的第 16 行看到它,现在虽然我收到错误,但一切仍然有效,但关闭错误报告对我来说并不是很好,所以任何帮助都会很棒。另外,如果您看到 undefined variable (例如 $mysqldb),它们实际上已设置,但在不同的页面上,并且它们是有效的

第二个错误:= 为简化模板系统而设计的函数

这都与第二个错误相关

function get_content_type($value){
if (strpos($value,'title:') === 0 ) {
$title = explode("title: ",$value);
$value = $title[1];
} else if (strpos($value,'css:') === 0 ) {
$css = explode("css: ",$value);
$value = $css[1];
} else if (strpos($value, 'js:') === 0 ) {
$javascript = explode("js: ", $value);
$value = $javascript[1];
} else {
// Silence is Golden
}

if($value == $title[1]){
echo '<title>'.$value.'</title>';
} else if ($value == $css[1]) {
echo '<link rel="stylesheet" href="'.$value.'">';
} else if ($value == $javascript[1]) {
echo '<script src="'.$value.'"></script>';
}
}

// Calling
get_content_type('title: Welcome to my site');
get_content_type('css: http://something.com/style.css');
get_content_type('js: http://code.jquery.com/jquery-latest.min.js');

一切都按此输出进行

<title>Welcome to my site</title><link rel="stylesheet" href="http://somesite.com/style.css"><script src="http://code.jquery.com/jquery-latest.min.js"></script>

仅当我设置error_reporting(0);

我得到的错误是 undefined variable ,因为显然我正在设置一个,然后我扰乱该变量并设置另一个,所以最终只有 1 是 true,尽管它已经正确输出了所有变量。

更新

第二个错误:错误=

注意: undefined variable :第 19 行 C:\Server\www\hidie\libs\test.php 中的 css注意: undefined variable :第 17 行 C:\Server\www\hidie\libs\test.php 中的标题注意: undefined variable :第 17 行 C:\Server\www\hidie\libs\test.php 中的标题

第一个错误:错误=

错误:警告:mysql_num_rows() 期望参数 1 为资源,给定 bool 值

最佳答案

好的,这就是你的问题:

首先,正如评论中提到的,mysql_num_rows仅适用于select和show。您将它放在查询方法中,该方法由插入调用。你不能这样做。

public function query($sql){
$this->_result = mysql_query($sql, $this->_link) or die('Cannot Execute:'. mysql_error());
$this->_numRows = mysql_num_rows($this->_result); // <- BAD!
}

您在此行调用它:

if($is_set == true){
$_service_database->query("INSERT INTO installs (ebay_id, name, db_name, identity) VALUES ('$_ebay_id', '$_company_name', '$mysqldb', '$mysqldb')");
}

您可以为数据库创建第二种方法,并为所有写入数据库的调用调用它:

public function execute($sql){
$this->_result = mysql_query($sql, $this->_link) or die('Cannot Execute:'. mysql_error());
}

这样调用:

if($is_set == true){
$_service_database->execute("INSERT INTO installs (ebay_id, name, db_name, identity) VALUES ('$_ebay_id', '$_company_name', '$mysqldb', '$mysqldb')");
}

其次,您需要在这些条件之外隐式定义变量 $css 和 $title。否则,您将尝试调用消息所示的 undefined variable ...

$title = "";
$css = "";

if (strpos($value,'title:') === 0 ) {
$title = explode("title: ",$value);
$value = $title[1];
} else if (strpos($value,'css:') === 0 ) {
$css = explode("css: ",$value);
$value = $css[1];
} else if (strpos($value, 'js:') === 0 ) {
$javascript = explode("js: ", $value);
$value = $javascript[1];
} else {
// Silence is Golden
}

关于php - undefined variable 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14720239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com