2008-11-25 7 views
0

Jusqu'à présent, j'ai le code ci-dessous qui fonctionne très bien en essayant une instruction de mise à jour, de suppression ou de sélection. Cependant, je rencontre des problèmes lorsque j'essaie d'utiliser un insert. Si quelqu'un pouvait me diriger dans la bonne direction, je serais reconnaissant.Instructions MySQL orientées objet, 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

/moi fonctionne plus ce que votre code fait et crie à l'agonie. –

Répondre

4

Il peut être utile de commencer par faire des insertions valides.

VALUES (a , b , c) 

Non

VALUES a, b , c 

De plus, pourquoi diantre êtes-vous Combinant un insert perpared avec chaîne substituion?

vous dire

$ req-> préparation ("bla bla bla VALUES (: date, etc etc)");
$ q-> bind (": date", $ date);

ou quelque chose dans le même sens. L'utilisation de ces deux techniques est simplement absurde.

+0

En toute honnêteté, je suis si nouveau à OO php que ça fait mal! Merci pour l'aide! – Drew

+1

vous voudrez peut-être consulter les documents sur PDO. Vous réimplémentez manuellement les fonctionnalités existantes. –

1

Vous devriez probablement envelopper les valeurs() dans parens aussi, comme:

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