-1

oop php で、コンストラクター mysql 接続を作成しました (非推奨になることはわかっており、PDO などを使用することをお勧めします) が、問題に遭遇しました。接続が確立され、すべてが順調に進んでいます。しかし、挿入ができない理由がわかりません。コードは最後まで実行されます。オブジェクトは接続を受け付けていないようですが、そうではありません。私が使用するPHP 5.4.3。コードは以下のとおりです。

Table (Coach):
Coach_id INT (AutoIncrement)
Coach_name char(30)
Coach_nationality char(30)


class League 
{
    public $con;

    public function MySQLCon()
    {
    $this->con = mysql_connect("localhost","root","") or mysql_error($this->con);
    mysql_select_db("basket",$this->con) or mysql_error($this->con);
    return $this->con;
    }

    public $coach,$coachNationality;

    public function NewCoach($coach,$coachNationality)
    {

        $this->coach = $coach;
        $this->coachNationality = $coachNationality;

        $Query = "insert into Coach_name (Coach_name,Coach_nationality) VALUES ('".$this->coach."','".$this->coachNationality."')";

        //this query doesn't do anything but prints yes
        mysql_query($Query,$this->con) or mysql_error($this->con);
        echo "yes";

    }
}

//no data about mike Brown in database, database engine InnoDB
$LG = new League;
$LG->MySQLCon();
$LG->NewCoach("Mike Brown","USA");
4

2 に答える 2

1

まず、エラー メッセージの使用を開始します。

class League 
{
    var $con;

    public function __construct()
    {
    $this->con = mysql_connect("localhost","root","") or die("No connection: " . mysql_error());
    mysql_select_db("basket",$this->con) or die("Database could not be selected: " . mysql_error($this->con));
    }

    public $coach,$coachNationality;

    public function NewCoach($coach,$coachNationality)
    {

        $this->coach = $coach;
        $this->coachNationality = $coachNationality;

        $Query = "insert into Coach_name (Coach_name,Coach_nationality) VALUES ('".$this->coach."','".$this->coachNationality."')";

        //this query doesn't do anything but prints yes
        mysql_query($Query,$this->con) or die(mysql_error($this->con));
        return true;    
    }
}

//no data about mike Brown in database, database engine InnoDB
$LG = new League;
if( $LG->NewCoach("Mike Brown","USA") ) echo "inserted, method NewCoach returned true";

コードを編集した後;

  1. mysql_error が受け取る唯一のパラメータは、文字列ではなく接続です。
  2. 挿入と選択の文字列は、引用符 '' または "" で囲む必要があります。
  3. mysql_query の 2 番目のパラメータは接続でなければなりません
  4. mysql の代わりに PDO または mysqli の使用を開始してください。PDO または mysqli は将来のリリースで PHP から削除される予定であり、すでにバック プラクティスであり、廃止されていると見なされています。
于 2013-02-27T14:22:06.430 に答える
0

クエリが間違っています。文字列には一重引用符を使用する必要があります。

"insert into Coach_name (Coach_name,Coach_nationality) VALUES ('".$this->coach."','".$coachNationality."')";

次のように、文字列内の単一のクォートがエスケープされていることを確認することをお勧めします。

... VALUES ('".mysql_real_escape_string($this->coach)."', ..

しかし、あなたのコードは非常に奇妙で、さらにエラーが発生する可能性があります

于 2013-02-27T14:11:19.937 に答える