Объектно-ориентированные операторы MySQL, PHP - PullRequest
0 голосов
/ 25 ноября 2008

Пока у меня есть код ниже, который прекрасно работает при попытке обновления, удаления или выбора оператора. Однако я сталкиваюсь с проблемами, когда я пытаюсь использовать вставку. Если бы кто-то мог указать мне правильное направление, я был бы благодарен.

private function escape($value)
{
    if(get_magic_quotes_gpc())
        $value = stripslashes($value);
    return mysql_real_escape_string($value, $this->dbConn);
}

/**
 * Handles connection to the database.
 * Die functions are used to catch any errors.
 */
public function connect($dbHost, $dbName, $dbUser, $dbPass)
{
    $this->dbConn = mysql_connect(
        $dbHost,
        $dbUser,
        $dbPass
    ) or die(mysql_error());
    mysql_select_db($dbName, $this->dbConn) or die(mysql_error());
}

/**
 * Loads a raw SQL string into the object $dbSql variable
 */
public function prep($sql)
{
    $this->dbSql = $sql;
}

/**
 * Load bound hooks and values into object variable
 */
public function bind($hook, $value)
{
    $this->dbBind[$hook] = $this->escape($value);

}

/**
 * Runs the SQL string in $dbSql object variable
 */
public function run()
{
    $sql = $this->dbSql;
    if(is_array($this->dbBind))
        foreach($this->dbBind as $hook => $value)
            $sql = str_replace($hook, "'" . $value . "'", $sql);  
    $this->dbQuery = mysql_query($sql) or die(mysql_error());
    $this->dbBind = array();
    return $this->numRows();
}


    // Load SQL statment into object
$MyDB->prep("INSERT INTO `demo` (`id`, `name`, `score`, `dept`, `date`) VALUES '1','James Kablammo', '1205550', 'Marketing', '$date'");
// Bind a value to our :id hook
// Produces: SELECT * FROM demo_table WHERE id = '23'
$MyDB->bind(':id',1);

// Run the query
$MyDB->run();

Ответы [ 2 ]

4 голосов
/ 25 ноября 2008

Это может помочь начать с использования допустимых операторов вставки.

VALUES ( a , b , c )

Не

VALUES a, b , c 

Кроме того, почему, Диккенс, вы комбинируете перфорированную вставку с заменой строки?

вы имеете в виду

$ q-> prep ("бла-бла-бла, ЗНАЧЕНИЯ (: дата и т. Д.)");
$ q-> bind (": date", $ date);

или что-то в этом роде. использование обоих методов просто бессмысленно.

1 голос
/ 25 ноября 2008

Скорее всего, вам также следует заключать значения () в скобки, например:

$MyDB->prep("INSERT INTO `demo` (`id`, `name`, `score`, `dept`, `date`) VALUES ('1','James Kablammo', '1205550', 'Marketing', '$date'"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...