0

だから私はプロジェクトに取り組んでおり、いくつかの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 がリソースであり、指定されたブール値であると想定しています ...、今、私はどこでも検索し、死ぬエラーが解決するはずであることがわかりました。そのため、関数クエリの 16 行目にそれを見ることができますが、エラーはすべてまだ機能しますが、エラーレポートをオフにするのはあまり良くないので、どんな助けも素晴らしいでしょう. また、$mysqldb のような未定義の変数が表示される場合、それらは実際には設定されていますが、別のページにあり、有効です。

2 番目のエラー : = テンプレート システムを単純化するために作成された関数

これはすべてSecond Errorに関連しています

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つを設定していて、それを不安定にしてもう1つを設定しているので、最終的には1つだけが真になりますが、それらはすべて正しく出力されています。

アップデート

2 番目のエラー: エラー数 =

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

4

1 に答える 1

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')");
} 

データベースの 2 番目のメソッドを作成し、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
}
于 2013-02-06T01:53:33.637 に答える