Yapay zekaya şöyle bir soru ilettim; class VT{ var $host="localhost"; var $user="root"; var $password=""; var $dbname="chayonetim"; var $connect; function __construct() { try{ $this->connect=new PDO("mysql:host=".$this->host.";dbname=".$this->dbname.";charset=utf8",$this->user,$this->password); } catch(PDOException $error) { echo $error->getMessage(); exit(); } } public function PullData($table,$wherepalace="",$wherearraycount="",$orderby="ORDER BY ID ASC",$limit="") { $this->connect->query("SET CHARACTER SET utf8"); $sql="SELECT * FROM".$table; if(!empty($wherepalace) && !empty($wherearraycount)) { $sql.=" ".$wherepalace; if(!empty($orderby)) {$sql.=" ",$orderby;} if(!empty($limit)) {$sql.=" LIMIT ",$limit;} $run=$this->connect->prepare($sql); $end=$run->execute($wherearraycount); $datav=$run->fetchAll(PDO::FETCH_ASSOC); } else { if(!empty($orderby)) {$sql.=" ",$orderby;} if(!empty($limit)) {$sql.=" LIMIT ",$limit;} $datav=$this->connect->query($sql,PDO::FETCH:ASSOC); } if($veri!=false && !empty($veri)) { $datavs=array(); foreach($datav as $information) { $datavs[]=$information; } return $datavs } else { return false; } } } ?>
[B]Bu kodun hatası ne? [/B]
cevap:
Alıntı
Bu PHP sınıfının hatalı olabilecek birkaç satırı var:
- SELECT sorgusunda tablo adının önünde "FROM" kelimesi olmadığı için hata verir. Doğru sorgu şu şekilde olmalıdır: "SELECT * FROM $table".
- "PDO::FETCH:ASSOC" ifadesi yanlış yazılmıştır. Doğru yazımı "PDO::FETCH_ASSOC" olmalıdır.
- "LIMIT" komutunun önünde ve sonrasında boşluk olmadığı için hata verir. Doğru hali "LIMIT $limit" olmalıdır.
- "foreach" döngüsünün içinde "$datav" değişkeni kullanılırken, döngü dışında "$veri" değişkeni kullanılmıştır. Bu nedenle "if ($veri!=false && !empty($veri))" koşulu aslında hiçbir zaman çalışmayacaktır. Doğru hali "if ($datav!=false && !empty($datav))" olmalıdır.
- "return $datavs" satırının sonunda nokta-virgül kullanılmamıştır. Doğru hali "return $datavs;" olmalıdır.