所以我正在开展一个项目,我正在运行一些mysql& php错误。
第一个错误:
这是与First Error相关的所有代码
// 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是资源,布尔给定...,现在我已经到处搜索并且只发现了模具错误应该解决,这就是为什么你可以在函数查询的第16行看到它,现在虽然我得到了错误,但一切仍然有效,对我来说关闭错误报告并不是很好,所以任何帮助都会很棒。此外,如果你看到未定义的变量,如$ 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);
我得到的错误是未定义的变量,因为显然我设置了一个,然后我解开那个并设置另一个因此最终只有1是真的,尽管它已经正确输出了所有这些。
更新
第二个错误:错误=
Notice: Undefined variable: css in C:\Server\www\hidie\libs\test.php on line 19
Notice: Undefined variable: title in C:\Server\www\hidie\libs\test.php on line 17
Notice: Undefined variable: title in C:\Server\www\hidie\libs\test.php on line 17
第一个错误:错误=
错误:Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given
答案 0 :(得分:2)
好的,这是你的问题:
首先,如评论中所述,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')");
}
您可以为数据库创建第二种方法,并为写入db的所有调用调用它:
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。否则,您将尝试调用未定义的变量,如消息所示...
$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
}