Sadece her zamanki gibi ben PHP ile etrafında en iyi uygulamaları bakıyordu, ve hazırlanan tablolar gözlerim kapalı ben şimdi nasıl yapmalıyım şeyler tür görünüyor. Yani ben buldum bazı örnekler etrafında oynamaya başladı.
Senaryoyu çalıştırırken bu hata var:
Fatal error: Call to a member function bindParam() on a non-object in /opt/lampp/htdocs/phpSecurity/PreparedStatments/Insert-Multi-Binded-Params/Insert Simple Method.php on line 10
İşte bu kodu gider.
Insert Simple Method.php
<?php
require_once '../config.php';
$stmt = $db->prepare("INSERT INTO coisas (nome, telefone, bi) VALUES (?, ?, ?)");
$nome = 'Fabio Antunes';
$telefone = 916810641;
$bi = 123093456;
$stmt->bindParam(1, $nome);
$stmt->bindParam(2, $telefone);
$stmt->bindParam(3, $bi);
$stmt->execute();
$stmt->close();
$db->close();
?>
config.php
<?php
$server_host = 'localhost';
$server_user = 'root';
$server_password = '';
$server_db = 'PreparedStatements';
$db = new mysqli($server_host, $server_user, $server_password, $server_db);
?>
Not sure what i'm doing wrong here, this is similar example found at php.net, why isn't working? PS: I think the mysqli connection isn't the problem because I've used it to do some prepared statements with SELECT SQL commands. And worked pretty well.
EDIT
Çözünürlük ve neden.
Eh example i sorguda her değer için bind_param()
kullanmalısınız. Ama Bart sayesinde, o benim koduyla sorunu çözmek için başardı.
Where it is:
$stmt->bindParam(1, $nome);
$stmt->bindParam(2, $telefone);
$stmt->bindParam(3, $bi);
It should be:
$stmt->bind_param("sii", $nome, $telefone, $bi);
Şimdi "sii" ne olduğunu merak ediyor olabilirsiniz olanlar için.
Peki ben her soru işareti için "$ var" bağlanan gördükleri için bind_param "?" indirin.
Yani biriyle bind_param()
i aynı anda hepsini bağlayabilir, ve normal kullanım bind_param()
veri binded olma türünü belirtmek gerekir.
Binded olmak için ilk değer "s" ile belirtilen $nome
bir dize ise;
Ve diğerleri $telefone
ve $bi
o "i" olması için Integers vardır;
Burada da benzer bir sorun var diğerleri için (php.net itibaren) diğer veri türlerini gider.
i = Integer;
s = String;
d = Çift;
b = Blob;
Daha iyi bir açıklama olarak birisi gönderebilir veya yorum lütfen. Yani ben kendi artırabilirsiniz.
Teşekkürler.