[英]sqli_query not functioning properly
我對 php 腳本相當陌生,我正在嘗試開發一個 sql 數據庫,我可以使用 android 應用程序連接到該數據庫。 現在我正在測試將查詢我使用 MAMP 運行的數據庫的腳本。
我擁有的兩個腳本是:conn.php
$user = 'root';
$password = 'root';
$db = 'employee101';
$host = 'localhost';
$port = 8889;
$link = mysqli_init();
$conn = mysqli_real_connect(
$link,
$host,
$user,
$password,
$db,
$port
);
if($conn){
echo "connection success";
}else{
echo "connection not success";
}
登錄.php
require "conn.php";
$user_name = "123";
$user_pass = "123";
$mysql_qry = "SELECT * FROM `employee_data` WHERE `username` LIKE '$user_name' AND `password` LIKE '$user_pass'";
$result = mysqli_query($conn, $mysql_qry);
if(mysqli_num_rows($result) > 0){
echo "login success";
}
else{
echo "login not success";
}
每當我使用 localhost:8888/login.php 測試登錄腳本時,我都會收到消息“connection successlogin not success”echo,意思是說查詢沒有找到匹配項,但我確實有一個帶有用戶名的條目123和密碼123
Server: localhost:8889
Database: employee101
Table: employee_data
我的登錄腳本有什么問題?
嘗試一些調試。
$mysql_qry = "SELECT * FROM `employee_data` WHERE `username` LIKE '".$user_name."' AND `password` LIKE '".$user_pass"' "; // Use single and double quotes
$result = mysqli_query($conn, $mysql_qry) or die(mysqli_error($conn)); // It will throw an error if there's an error
echo mysqli_num_rows($result); exit; // This will return a number. Either 0 or 1.
希望這可以幫助。
和平! xD
你真的應該使用 PDO。 我創建了一個可以用於此目的的骨架。
https://gist.github.com/ryantxr/d587c96dd3ad33aa3885
使用 require_once 這樣您的文件就不會意外加載兩次。
<?php
// DATABASE-HOSTNAME-OR-IPADDRESS-GOES-HERE
// MYSQL-DBNAME-GOES-HERE
class LoginHandler {
public $dbHostname = 'DATABASE-HOSTNAME-OR-IPADDRESS-GOES-HERE';
public $dbDatabaseName = 'MYSQL-DBNAME-GOES-HERE';
public $user = 'DATABASE_USERNAME';
public $password = 'DATABASE_PASSWORD';
//public $port = 3307;
public function handleRequest($arg) {
$username = $arg['username'] ? $arg['username']: null;
$password = $arg['password'] ? $arg['password']: null;
if ( ! $username || ! $password ) {
$this->fail();
return;
}
try {
$portChunk = ( isset($this->port) ) ? ';port=' . $this->port : null;
$dsn = "mysql:dbname={$this->dbDatabaseName};host={$this->dbHostname}{$portChunk}";
$pdo = new PDO($dsn, $this->user, $this->password);
$sql="SELECT * FROM `user` WHERE `username`='$username' and `password`='$password'";
$stmt = $pdo->query($sql);
if ( $stmt === false ) {
$this->fail();
return;
}
elseif ( $stmt->rowCount() > 0 ) {
$this->success();
return;
}
else {
$this->fail();
return;
}
}
catch(PDOException $e) {
$this->log('Connection failed: ' . $e->getMessage());
$this->fail();
}
}
function success() {
echo json_encode(['success' => 1]);
}
function fail() {
echo json_encode(['success' => 0]);
}
function log($msg) {
file_put_contents("login.log", strftime('%Y-%m-%d %T ') . "$msg\n", FILE_APPEND);
}
}
$handler = new LoginHandler();
$handler->handleRequest($_POST);
// MacBook-Pro:~ me$ curl http://PUT_YOUR_HOSTNAME/apicall.php -d"username=drum&password=pass1"
// {"success":0}
// MacBook-Pro:~ me$ curl http://PUT_YOUR_HOSTNAME/apicall.php -d"username=drum&password=pass0"
// {"success":1}
這是表定義:-
CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(100) DEFAULT NULL,
`password` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
INSERT INTO `user` (`id`, `username`, `password`)
VALUES
(1, 'drum', 'pass');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.