正確なユーザーのすべての値を取得するにはどうすればよいですか? 私は2つのテーブル、1つのユーザーと1つの製品リストを持っています。 ユーザーがログインすると、彼に関連付けられた製品リストが表示されなければなりません。問題は、私は1つだけの製品を取得し、そのユーザーのすべての製品を取得していないということです。このphpはiosアプリケーションと迅速にインターフェイスされています。 そのユーザーの製品リストにすべての製品を表示する必要があります。正確なユーザーのすべての値を取得する方法PHP mysql
<?php
/** * PhpStormによって作成されます。 *ユーザー:アントニオ *日:23/06/17 *時間:20:36 */
クラスDbOperation { 民間の$ CONN。
//Constructor
function __construct()
{
require_once dirname(__FILE__) . '/Constants.php';
require_once dirname(__FILE__) . '/DbConnect.php';
// opening db connection
$db = new DbConnect();
$this->conn = $db->connect();
}
//Function to create a new user
public function createUser($username, $pass, $email, $nome, $cognome, $telefono, $immagine)
{
if (!$this->isUserExist($username, $email, $telefono)) {
$password = md5($pass);
$stmt = $this->conn->prepare("INSERT INTO utenti (username, password, email, nome, cognome, telefono, immagine) VALUES (?, ?, ?, ?, ?, ?)");
$stmt->bind_param("ssssss", $username, $password, $email, $nome, $cognome, $telefono, $immagine);
if ($stmt->execute()) {
return USER_CREATED;
} else {
return USER_NOT_CREATED;
}
} else {
return USER_ALREADY_EXIST;
}
}
private function isUserExist($username, $email, $telefono)
{
$stmt = $this->conn->prepare("SELECT id FROM utenti WHERE username = ? OR email = ? OR telefono = ?");
$stmt->bind_param("sss", $username, $email, $telefono);
$stmt->execute();
$stmt->store_result();
return $stmt->num_rows > 0;
}
public function userLogin($username, $pass)
{
$password = md5($pass);
$stmt = $this->conn->prepare("SELECT id FROM utenti WHERE username = ? AND password = ?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();
$stmt->store_result();
return $stmt->num_rows > 0;
}
/*
* After the successful login we will call this method
* this method will return the user data in an array
* */
public function getUserByUsername($username)
{
$stmt = $this->conn->prepare("SELECT id, username, email, nome, cognome, telefono, immagine FROM utenti WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();
$stmt->bind_result($id, $username, $email, $nome, $cognome, $telefono, $immagine);
$stmt->fetch();
$user = array();
$user['id'] = $id;
$user['username'] = $username;
$user['email'] = $email;
$user['nome'] = $nome;
$user['cognome'] = $cognome;
$user['telefono'] = $telefono;
$user['immagine'] = $immagine;
return $user;
}
public function getProdottiByUsername($username)
{
$stmt = $this->conn->prepare("SELECT * FROM `listaprodotti` WHERE `username` = ?");
$stmt->bind_param("s", $username);
$stmt->execute();
$stmt->bind_result($username, $id_prodotto, $nome_prodotto, $categoria, $quantita);
$stmt->fetch();
$prodotti = array();
$prodotti['username'] = $username;
$prodotti['id_prodotto'] = $id_prodotto;
$prodotti['nome_prodotto'] = $nome_prodotto;
$prodotti['categoria'] = $categoria;
$prodotti['quantita'] = $quantita;
return $prodotti;
}
これは、ログインのためのSWIFTコードとは、取得した値(ユーザおよび製品) {
インポートAlamofire インポートのUIKit インポートAVFoundation
クラスLoginController1:のUIViewController {
//The login script url make sure to write the ip instead of localhost
//you can get the ip using ifconfig command in terminal
let URL_USER_LOGIN = "http://................"
//the defaultvalues to store user data
let defaultValues = UserDefaults.standard
//the connected views
//don't copy instead connect the views using assistant editor
@IBOutlet weak var labelMessage: UILabel!
@IBOutlet weak var username: UITextField!
@IBOutlet weak var password: UITextField!
//the button action function
@IBAction func buttonLogin(_ sender: UIButton) {
//getting the username and password
let parameters: Parameters=[
"username":username.text!,
"password":password.text!
]
//making a post request
Alamofire.request(URL_USER_LOGIN, method: .post, parameters: parameters).responseJSON
{
response in
//printing response
print(response)
//getting the json value from the server
if let result = response.result.value {
let jsonData = result as! NSDictionary
//if there is no error
if(!(jsonData.value(forKey: "error") as! Bool)){
//getting the user from response
let user = jsonData.value(forKey: "user") as! NSDictionary
//getting user values
let userId = user.value(forKey: "id") as! Int
let userName = user.value(forKey: "username") as! String
let userEmail = user.value(forKey: "email") as! String
let userNome = user.value(forKey: "nome") as! String
let userCognome = user.value(forKey: "cognome") as! String
let userTelefono = user.value(forKey: "telefono") as! String
//saving user values to defaults
self.defaultValues.set(userId, forKey: "userid")
self.defaultValues.set(userName, forKey: "username")
self.defaultValues.set(userEmail, forKey: "useremail")
self.defaultValues.set(userNome, forKey: "usernome")
self.defaultValues.set(userCognome, forKey: "usercognome")
self.defaultValues.set(userTelefono, forKey: "usertelefono")
///prende i valori dei prodotti dalla cella legata a quel username
let prodotti = jsonData.value(forKey: "prodotti") as! NSDictionary
let prodottiId_prodotto = prodotti.value(forKey: "id_prodotto") as! Int
let prodottiNome_prodotto = prodotti.value(forKey: "nome_prodotto") as! String
let prodottiCategoria = prodotti.value(forKey: "categoria") as! String
let prodottiQuantita = prodotti.value(forKey: "quantita") as! String
let prodottiUsername = prodotti.value(forKey: "username") as! String
//saving i valori di questo username
self.defaultValues.set(prodottiId_prodotto, forKey: "id_prodotti")
self.defaultValues.set(prodottiNome_prodotto, forKey: "nome_prodotto")
self.defaultValues.set(prodottiCategoria, forKey: "categoria")
self.defaultValues.set(prodottiQuantita, forKey: "quantita")
self.defaultValues.set(prodottiUsername, forKey: "username")
//Go to the HomeViewController if the login is sucessful
let ProfiloController = self.storyboard?.instantiateViewController(withIdentifier: "Profilo") as! ProfiloController
self.navigationController?.pushViewController(ProfiloController, animated: true)
self.dismiss(animated: false, completion: nil)
}else{
//error message in case of invalid credential
let alertController = UIAlertController(title: "Error", message: "Username e password sbagliati", preferredStyle: .alert)
let defaultAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)
alertController.addAction(defaultAction)
self.present(alertController, animated: true, completion: nil)
}
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
if defaultValues.string(forKey: "username") != nil{
let ProfiloController = self.storyboard?.instantiateViewController(withIdentifier: "Profilo") as! ProfiloController
self.navigationController?.pushViewController(ProfiloController, animated: true)
}
}
var player: AVPlayer?
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let tap = UITapGestureRecognizer(target: self, action: #selector(LoginController1.dismissKeyboard))
view.addGestureRecognizer(tap)
let path = Bundle.main.path(forResource: "introoiphone 7 plus", ofType: "mp4")
player = AVPlayer(url: URL(fileURLWithPath: path!))
player!.actionAtItemEnd = AVPlayerActionAtItemEnd.none;
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.view.frame
playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
self.view.layer.insertSublayer(playerLayer, at: 0)
NotificationCenter.default.addObserver(self, selector: #selector(LoginController1.playerItemDidReachEnd), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player!.currentItem)
player!.seek(to: kCMTimeZero)
player!.play()
}
func playerItemDidReachEnd() {
player!.seek(to: kCMTimeZero)
}
func dismissKeyboard(tap: UITapGestureRecognizer) {
print("Keyboard Dismiss Again")
view.endEditing(true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
クエリで疑問符を使用する代わりに、名前付きパラメータを使用してみてください。 –
^準備文を使ってうまくやっています。ビットごとにコードをテストして、具体的に動作していない部分を表示してみてください。 – JoshKopen
^Okありがとう.... –