0

こんにちは、オブジェクト指向スタイルで mysqli を使用していると確信しているような基本的な問題を乗り越えようとして、多くの問題を抱えています。私は数多くのガイドに従い、php マニュアルを確認しました。しかし、mysqli で実行できる唯一のデータベース操作は、テーブルからデータを取得することです。登録ページを作成しようとしていますが、投稿データをデータベースに入れています。古いスタイルの msql_connect で何度もこれを実行しましたが、オブジェクト指向スタイルが私を悩ませています。これが私のコードです。

$db = new mysqli(info is all corrected as i tested database connectivity);

 if ($db->connect_errno > 0){
die('unable to connect to database [' . $db->connect_error . ']');
}
else {
    echo('conenction successful');
}

    $fname = $_POST['fname'];  
    $lname = $_POST['lname']; 
    $uname = $_POST['uname']; 
    $email = $_POST['email']; 
    $email1 = $_POST['emai1']; 
    $ad1 = $_POST['ad1']; 
    $ad2 = $_POST['ad2']; 
    $town = $_POST['town']; 
    $city = $_POST['city']; 
    $postcode = $_POST['postcode'];
    $mphone =  $_POST['mphone'];
    $hphone = $_POST['hphone'];
    $password ="hh";
    if (!($stmt->$db->prepare("INSERT INTO `users` (`username`, `fname`, `lname`, 
                            `password`, `email`, `address1`, `address2`, `town`, 
                            `city`, `postcode`, `mphone`, `hphone`)
                            VALUES
                            (?,?,?,?,?,?,?,?,?,?,?,?)")))
    {
        echo "Prepare failed: (" . $db->errno . ")" . $db->error;
        }

    if (!$stmt->bind_param("ssssssssssii",  $uname, $fname, $lname, $password, $email, $ad1, $ad2, $town, $city, $postcode, $mphone, $hphone))
    {
        echo "binding parameters failed: (" . $stmt->errno . ")" . $stmt->error;
    }               
    if (!$stmt->execute()) {
        echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}

users テーブルのデータベース スキーマは次のとおりです。

CREATE TABLE `users` (

idint(11) unsigned NOT NULL AUTO_INCREMENT、 usernamevarchar(10) NOT NULL DEFAULT ''、 fnamevarchar(11) NOT NULL、 lnamevarchar(11) NOT NULL、 passwordvarchar(50) NOT NULL DEFAULT ''、 emailvarchar(40) NOT NULL DEFAULT '', accessint(8) NOT NULL DEFAULT '1', address1varchar(50) DEFAULT NULL, address2varchar(50) DEFAULT NULL, townvarchar(25) DEFAULT NULL, cityvarchar(20) DEFAULT NULL, postcodevarchar(8) DEFAULT NULL, mphoneint (11) DEFAULT NULL, hphoneint(11) DEFAULT NULL, saltvarchar(50) DEFAULT NULL, PRIMARY KEY ( id) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

誰かが間違っているところを正しい方向に向けてください。

4

1 に答える 1

-1

これを試してください(ニーズに合わせて調整してください):

<?php

if (!$stmt = $db->prepare(/* I'm not gonna write all this down :P */)) {
    // Error output (or better log them somewhere, users don't have to see this stuff)
    return;
}
$stmt->bind_param("ssssssssssii", $uname, $fname, $lname, $password, $email, $ad1, $ad2, $town, $city, $postcode, $mphone, $hphone);
if (!$stmt->execute()) {
    // Error output (again, better to log them somewhere)
    return;
}
于 2013-10-25T05:27:47.943 に答える