2008-11-25 87 views
0

到目前为止,我已经得到了下面的代码,当试图更新,删除或选择语句时,它很可爱。但是,当我尝试使用插入时遇到问题。如果有人能指出我正确的方向,我会很感激。面向对象的MySQL语句,PHP

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(); 
+1

/我工作出更多你的代码做什么,并在痛苦中尖叫。 – 2008-11-25 11:20:57

回答

4

它可以帮助开始使用有效的INSERT语句。

VALUES (a , b , c) 

VALUES a, b , c 

此外,为什么狄更斯你结合起来串substituion一个perpared插入?

你的意思

$ Q->准备( “等等等等等等VALUES(:日期,等等等等)”);
$ q-> bind(“:date”,$ date);

或沿着这些线。使用这两种技术只是无稽之谈。

+0

诚实地说,我对OO php非常陌生,它很痛!谢谢您的帮助! – Drew 2008-11-25 11:27:02

1

你或许应该包装在括号中的值()太像:

$MyDB->prep("INSERT INTO `demo` (`id`, `name`, `score`, `dept`, `date`) VALUES ('1','James Kablammo', '1205550', 'Marketing', '$date'"));