1

ログインしたユーザーのユーザー名を年齢にリンクしようとしましたが、以下のエラーが発生しています。誰でも私を助けることができますか?ユーザー名と年齢を挿入するのを手伝ってください。

Catchable fatal error: Object of class loggedInUser could not be converted to string 

挿入クエリは次のとおりです。

<?php

if ( isset( $_POST['submit'] ) ) { 
require_once("models/config.php");
securePage($_SERVER['PHP_SELF']);

$age = $_POST["age"];
$username = $_SESSION["userCakeUser"];
$stmt = $mysqli->prepare("INSERT INTO test (username, Age) VALUES (?, ?)");

// TODO check that $stmt creation succeeded

// "s" means the database expects a string
$stmt->bind_param("ss",  $username, $age);

$stmt->execute();


$stmt->close();

mysqli->close();
}
?>
<html>
<body>
<form action="" method="post" enctype="multipart/form-data">
Age:<input type="text" name="age" required><br>
<input type="submit" value="Submit" name="submit">
</form>

そして、ここに私が持っているものがありますconfig.php:

<?php
require_once("db-settings.php"); //Require DB connection

//Retrieve settings
$stmt = $mysqli->prepare("SELECT id, name, value
FROM ".$db_table_prefix."configuration");   
$stmt->execute();
$stmt->bind_result($id, $name, $value);

while ($stmt->fetch()){
$settings[$name] = array('id' => $id, 'name' => $name, 'value' => $value);
}
$stmt->close();

//Set Settings
$emailActivation = $settings['activation']['value'];;
$mail_templates_dir = "models/mail-templates/";
$websiteName = $settings['website_name']['value'];
$websiteUrl = $settings['website_url']['value'];

$emailAddress = $settings['email']['value'];
$resend_activation_threshold = $settings['resend_activation_threshold']['value'];
$emailDate = date('dmy');
$language = $settings['language']['value'];
$template = $settings['template']['value'];

$default_hooks = array("#WEBSITENAME#","#WEBSITEURL#","#DATE#");
$default_replace = array($websiteName,$websiteUrl,$emailDate);

if (!file_exists($language)) {
$language = "models/languages/en.php";
}

if(!isset($language)) $langauge = "models/languages/en.php";

//Pages to require
require_once($language);
require_once("class.mail.php");
require_once("class.user.php");
require_once("class.newuser.php");
require_once("funcs.php");

session_start();

//Global User Object Var
//loggedInUser can be used globally if constructed
if(isset($_SESSION["userCakeUser"]) && is_object($_SESSION["userCakeUser"]))
{
$loggedInUser = $_SESSION["userCakeUser"];
}

?>
4

2 に答える 2

1

あなたの loggedInUser オブジェクトが持つプロパティはわかりませんが、次のようなものを試してください

$user = $_SESSION["userCakeUser"]; // I think this returns an object - loggedInUser
$stmt = $mysqli->prepare("INSERT INTO test (username, Age) VALUES (?, ?)");

// TODO check that $stmt creation succeeded

// "s" means the database expects a string
$stmt->bind_param("ss",  $user->userName, $age); //or $user->getUsername()
于 2013-01-26T22:31:58.407 に答える
0

ある時点で、コードのどこにあるかわかりませんが、オブジェクトを文字列として扱っています。何をしようとしているかに応じて、これを回避する方法がいくつかあります。

  • クラス__toString()で魔法のメソッドを使用する$loggedInUser
  • $loggedInUserクラスから文字列プロパティを取得し、それを処理します。例えば$loggedInUser->getName()
于 2013-01-26T22:31:05.197 に答える