2010-04-27 8 views
1

Code 1: problème de base de données PHP MySQL

 
<?php 
class dbConnect { 
    var $dbHost = 'localhost', 
    $dbUser = 'root', 
    $dbPass = '', 
    $dbName = 'input_oop', 
    $dbTable = 'users'; 
    function __construct() {

$dbc = mysql_connect($this->dbHost,$this->dbUser,$this->dbPass) or die ("Cannot connect to MySQL : " . mysql_error()); mysql_select_db($this->dbName) or die ("Database not Found : " . mysql_error()); } } class User extends dbConnect { var $name; function userInput($q) { $sql = "INSERT INTO $this->dbTable set name = '".$q."'"; mysql_query($sql) or die (mysql_error()); } } ?>


C'est le code pour appeler la classe.

 
<?php 
include ('class.php'); 
$q=$_GET["q"]; 
$user = new User; 
    $user->userInput($q); 
?> 


Code 2:

 
<?php 
    $q = $_GET['q']; 
$dbc=mysql_connect("localhost","root","") or die (mysql_error()); 
    mysql_select_db('input_oop') or die (mysql_error()); 
    $sql = "INSERT INTO users set name = '".$q."'"; 
    mysql_query($sql) or die (mysql_error()); 
?> 

Mon Code 1 Enregistrer dans ma base de données:
alt text
Enregistrer plusieurs!

Mon Code 2 Enregistrer dans ma base de données:
alt text

Quel est le problème avec mon code 1?

+1

Que voulez-vous qu'il fasse en premier lieu? –

+1

En plus de votre problème actuel: N'oubliez pas de valider toutes les données entrantes avant de les envoyer à la base de données. Sinon, votre script sera vulnérable pour SQL-Injections. Jetez un oeil à 'mysql_real_escape()' par exemple. – Ham

+1

Comment appelez-vous la fonction userInput() dans Code1? – harwig

Répondre

3

Eh bien, le code 1 est ouvert à l'injection SQL car vous n'échappez pas à $ q. Quant à savoir pourquoi vous obtenez deux enregistrements, ce problème ne se trouve pas dans le code 1, mais probablement dans le code qui appelle userInput.

Questions connexes