1

jquery 検証とキャプチャを使用したフォームがあり、データベースへの投稿に問題があります。私はこれが初めてで、私のコードは醜く、これを 2 回試みました。どちらも失敗します。オブジェクト指向と手続き型スタイルを混同していると思います。

最初のコード

<?php
  require_once('recaptchalib.php');
  $privatekey = "x";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    // What happens when the CAPTCHA was entered incorrectly
    die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
         "(reCAPTCHA said: " . $resp->error . ")");
  } else {
$mysqli = new MySQLi("x","x","x","x");

    if(mysqli_connect_errno()){
                echo "failed to connect to db" . mysqli_connect_error();
                exit();
                }
$cf_firstname=$_POST[cf_firstname];
$cf_lastname=$_POST[cf_lastname];   
$cf_address=$_POST[cf_address];
$cf_address2=$_POST[cf_address2];
$cf_city=$_POST[cf_city];
$cf_state=$_POST[cf_state];
$cf_zipcode=$_POST[cf_zipcode];
$cf_contact1=$_POST[cf_contact1];
$cf_contact2=$_POST[cf_contact2];
$cf_contact3=$_POST[cf_contact3];
$cf_message=$_POST[cf_message];
$cf_email=$_POST[cf_email];
$cf_phone=$_POST[cf_phone];
$cf_sale=$_POST[cf_sale];   
$sql="INSERT INTO Contacts (`cf_firstname`, `cf_lastname`, `cf_address`, `cf_address2`, `cf_city`, `cf_state`, `cf_zipcode`, `cf_contact1`, `cf_contact2`, `cf_contact3`, `cf_message`, `cf_email`, `cf_phone`, `cf_sale`) VALUES ($cf_firstname,$cf_lastname,$cf_address,$cf_address2,$cf_city,$cf_state,$cf_zipcode,$cf_contact1,$cf_contact2,$cf_contact3,$cf_message,$cf_email,$cf_phone,$cf_sale)"; 

$result = $mysqli->query($sql);     
if (!$result) {
    printf("%s\n", $mysqli->error());
    exit();
}
echo "query run" ;


$stmt->execute();
$stmt->close();
  }






?>

致命的なエラー: 未定義のメソッド mysqli::error() の呼び出し 38 行目

2 回目の試行

<?php
  require_once('recaptchalib.php');
  $privatekey = "x";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    // What happens when the CAPTCHA was entered incorrectly
    die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
         "(reCAPTCHA said: " . $resp->error . ")");
  } else {
$mysqli = new MySQLi("x");

    if(mysqli_connect_errno()){
                echo "failed to connect to db" . mysqli_connect_error();
                exit();
                }
$stmt = $mysqli->prepare("INSERT INTO Contacts (cf_firstname, `cf_lastname`, `cf_address`, `cf_address2`, `cf_city`, `cf_state`, `cf_zipcode`, `cf_contact1`, `cf_contact2`, `cf_contact3`, `cf_message`, `cf_email`, `cf_phone`, `cf_sale`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); 
echo $mysqli->error;            
$stmt->bind_param("ssssssssssssss",$cf_firstname,$cf_lastname,$cf_address,$cf_address2,$cf_city,$cf_state,$cf_zipcode,$cf_contact1,$cf_contact2,$cf_contact3,$cf_message,$cf_email,$cf_phone,$cf_sale);     
    $cf_firstname=$_POST[cf_firstname];
    $cf_lastname=$_POST[cf_lastname];
    $cf_address=$_POST[cf_address];
    $cf_address2=$_POST[cf_address2];
    $cf_city=$_POST[cf_city];
    $cf_state=$_POST[cf_state];
    $cf_zipcode=$_POST[cf_zipcode];
    $cf_contact1=$_POST[cf_contact1];
    $cf_contact2=$_POST[cf_contact2];
    $cf_contact3=$_POST[cf_contact3];
    $cf_message=$_POST[cf_message];
    $cf_email=$_POST[cf_email];
    $cf_phone=$_POST[cf_phone];
    $cf_sale=$_POST[cf_sale];
    echo $mysqli->error;

$stmt->execute();
$stmt->close();
  }






?>

私が見つけることができるエラーはありませんが、データベースには投稿されません。

私はDW5.5を使用していますが、この種のより良いものはありますか?

オブジェクト指向または手続き型スタイルは単なる選択ですか? いくつかの点で 1 つのスタイルの方が優れていますか?

私は主に例をコピーして、このことを学び、機能させるようにしています。ここで立ち往生しています。

4

1 に答える 1

1

最初の例はかなり良さそうです。エラー メッセージに惑わされないでください。エラー メッセージは役に立ちます。"Fatal error: Call to undefined method mysqli::error() Line 38" は、38 行目で、php によると存在しない関数である何かを実行しようとしたことを意味します。

「undefined method mysqli::error()」が手がかりです。php マニュアルの mysqli の使用方法の例 1 を見てください。問題が解決する可能性があります。

http://php.net/manual/en/mysqli.error.php

あなたが 38 行目に到達したという事実は、その時点までのコードが実際に優れていると私に信じさせます。ただし、私の最初のステップは、INSERT ステートメントのすべてのコードをハードコードされた値に置き換えて、それが機能するかどうかを確認することです。もしそうなら、それはあなたが動的に入ってきたデータがあなたのクエリを台無しにしていることを意味します(私の経験では、それが最も可能性の高い答えです).

于 2013-05-31T22:09:30.870 に答える