Ben hazırlanan tablolarda etrafında başımı almak için çalışıyorum.
Temelde, bu yüzden normalde böyle bir ekleme yapmak istiyorum:
$sql = '
INSERT INTO customers
(customer_first, customer_last, customer_address, customer_email)
VALUES
(' . mysql_real_escape_string($_POST['customer_first']) . ',
' . mysql_real_escape_string($_POST['customer_last']) . ',
' . mysql_real_escape_string($_POST['customer_address']) . ',
' . mysql_real_escape_string($_POST['customer_email']) . ' )
';
mysql_query($sql);
Neyden Ancak Hazırlanan İfadeleri kullanarak bunu yapmak için daha güvenli bir yol var söylendi.
Şimdiye kadar ben bunu böyle yapılır düşünüyorum:
$stmt = $dbh->prepare("INSERT INTO customers (customer_first, customer_last, customer_address, customer_email) VALUES (:customer_first, :customer_last, :customer_address, :customer_email)");
$stmt->bindParam(':customer_first', $_POST['customer_first']);
$stmt->bindParam(':customer_last', $_POST['customer_last']);
$stmt->bindParam(':customer_address', $_POST['customer_address']);
$stmt->bindParam(':customer_email', $_POST['customer_email']);
$stmt->execute();
Bu doğru mudur? Yoksa başarmak için çalışıyorum ne yapmak için daha iyi bir yolu var mı? Ben yukarıda çalışırsanız ben "olmayan bir nesne üzerinde () hazırlamak bir üye işlev çağrısı" bir hata alıyorum - bu ne demek oluyor?
Ben örnekler kullanıyorum @ http://php.net/manual/en/pdo.prepared-statements.php. Bu o olsun demek - bir $ dbh ifade eder? Ben veritabanı bağlantısı ile ilgili bir şey olduğunu varsayarak kulüpler - $ dbh yerde başvurulan olması gerekiyordu?
Bu sorulara ek olarak, ben hala yukarıdaki gibi hazırlanmış deyimleri kullanarak mysql_insert_id gibi şeyler () veya mysql_error () kullanabilir miyim?