0

私のコードがここで機能しない理由私は何か間違ったことをしたと思いますが、誰かが私が間違ったことをここで見つけることができるかどうかを判断することはできません私は感謝します

これが私のコードです:データベースに新しい行を挿入するためにphpクラスを使用しようとしています

<?php
$connection = new PDO('mysql:dbname=master;host=localhost','root','123');
/*if($connection)
{
    echo 'Database is connected successfully';
}
else
     {
    echo 'please connect to a database';
}*/
class Topics
{
    public $id;
    public $title;
    public $body;
    public static $table_name = 'topics';
    public static $fields = array ('title','body');
    private function attributes()
    {
        $string = array();  
        foreach (self::$fields as $field) 
        {
            if (!empty($field)) {
                if(is_int($this->$field))
                {
                    $string[] = $field." =".$this->$field;
                }
                else
                {
                    $string[] = $field." ="."'".$this->$field."'";
                }

            }   

        }
        return join(',', $string);
    }
    public function add()
    {
        global $connection;
        $sql = 'INSERT INTO'.self::$table_name.'SET'.$this->attributes();
        $number_of_affected_rows = $connection->exec($sql);
        if($number_of_affected_rows >0)
        {
            $this->id = $connection->lastInsertId();
        }
        return ($number_of_affected_rows>0) ? $number_of_affected_rows : FALSE;
    }
}
$mohamed = new Topics();
$mohamed->title = 'Hello';
$mohamed->body = 'Hello world again';
return $mohamed->add();
?>
4

1 に答える 1

0

正確に機能していないものは何ですか?とにかくSQLが間違っています。空白が必要なためです。

'INSERT INTO '.self::$table_name.' SET '.$this->attributes();

また、SQLのテーブル名とフィールド名もエスケープする必要があります。

于 2012-11-28T13:47:11.900 に答える