30. juli 2006 - 14:58Der er
16 kommentarer og 1 løsning
Klasser og Parametre - Problem
Hej.
Det omhandler følgende script.
************************************************ 1) <?PHP 2) 3) class dbConnect { 4) private $conn; 5) 6) public function __construct($host, $user, $pass, $db) { 7) $this->conn = mysqli_connect($host, $user, $pass, $db); 8) } 9) 10) public function selectQuery($table, $field) { 11) $result = mysqli_query($this->conn, "SELECT * FROM $table") or die(mysqli_error($this->conn)); 12) 13) $a=Array(); 14) while ($row = mysqli_fetch_array($result)) { 15) $a[] = $row["$field"]; 16) } 17) return $a; 18) } 19) } 20) 21) $db = new dbConnect("localhost","root","210382","technolog"); 22) $db->selectQuery("techno","Id_techno"); 23) 24) foreach ($db->selectQuery() as $value) { 25) echo "$value<br />"; 26) } 27) 28) ?> ************************************************
Jeg modtager følgende fejl på ovenstående:
Warning: Missing argument 1 for dbConnect::selectQuery(), called in C:\dbtest.php on line 24 and defined in C:\dbtest.php on line 10
Warning: Missing argument 2 for dbConnect::selectQuery(), called in C:\dbtest.php on line 24 and defined in C:\dbtest.php on line 10
Notice: Undefined variable: table in C:\dbtest.php on line 11
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 ************************************************
Det jeg gerne vil er at lave min klasse så dynamisk som muligt. Sådan at den tabel den skal vælge og hvilket felt den skal udskrive sendes tilbage som en parameter. Vil også meget gerne at der er mulighed for at sende endnu en parametre tilbage såsom "where id=1" altså der skal være mulighed for at indsætte en where clause hvis der er et behov for dette.
Men hvad så hvis jeg også vil have mulighed for at tilføje en "where caluse" hvis der er behov for den? Altså sådan at den virker om man sender where med eller ej ?
Og hop lige ind i det forrige spørgsmål og smid et svar nielle :)
public function __construct($host, $user, $pass, $db) { $this->conn = mysqli_connect($host, $user, $pass, $db); }
public function selectQuery($table, $field, $where) { $result = mysqli_query($this->conn, "SELECT * FROM $table $where") or die(mysqli_error($this->conn));
Skal du ikke bruge din $field en smule mere effektivt?
public function selectQuery($table, $field, $where) { $result = mysqli_query($this->conn, "SELECT $field FROM $table $where") or die(mysqli_error($this->conn));
Din WHER kan måske også klare en smule mere elegant:
public function selectQuery($table, $field, $where) { if ($where != "") $where = " WHERE $where"; $result = mysqli_query($this->conn, "SELECT $field FROM $table$where") or die(mysqli_error($this->conn));
public function selectQuery($table, $field, $where = "") { if ($where != "") $where = " WHERE $where"; $result = mysqli_query($this->conn, "SELECT $field FROM $table$where") or die(mysqli_error($this->conn));
public function __construct($host, $user, $pass, $db) { $this->conn = mysqli_connect($host, $user, $pass, $db); }
public function selectQuery($table, $field, $where) { if ($where != "") $where = " WHERE $where"; $result = mysqli_query($this->conn, "SELECT $field FROM $table$where") or die(mysqli_error($this->conn));
Det kan du have ret i. Var også selv i vandet i går :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.