我有一個iOS應用程序使用Swift 3使用PHP文件來接收對象,但現在正在將對象更新到數據庫中。正確的PHP代碼? - 插入到MySQL
我是PHP新手,所以我的問題是,下面的PHP代碼是否正確?它應該從我的應用程序插入一個變量,這是從一個按鈕+1點通過PHP和UPDATE我的'測試'表在MySQL數據庫。我已經在數據庫中有一個名爲testPop的列,變量也稱爲testPop,它在json對象數組中被接收,但我只是試圖更新表。
所以,如果row1 = id:1 testName:test1 testPop:0
我想testPop更新它的值每次某人增加了一個點+1
當前PHP代碼:
<?php
$host = "host";
$db = "db";
$user = "user";
$pass = "pass";
$connection = mysql_connect($host,$user,$pass);
// Guessing: Posting into MySQL Object
$id = $_POST["id"];
// Checking if connection can be established
if(!$connection){
die("Connection Failed");
}
else
{
// Selecting Database
$dbconnect = mysql_select_db($db, $connection);
// Check if it can connect to Database
if(!$dbconnect){
die("Unable to connect to Database");
}
else
{
$query = sprintf("UPDATE tests SET testPop=testPop+1 WHERE id = %d", $id);
$resultset = mysql_query($query, $connection);
echo "Successfully added";
echo $query;
}
}
?>
斯威夫特3代碼:將數據發送到數據庫:
func sendData() {
let postDataURL = "http://exampleip.com/Send.php"
let url: NSURL = NSURL(string: postDataURL)!
let request: NSMutableURLRequest = NSMutableURLRequest(url:url as URL)
let bodyData = String(1)
request.httpMethod = "POST"
request.httpBody = bodyData.data(using: String.Encoding.utf8)
NSURLConnection.sendAsynchronousRequest(request as URLRequest, queue: OperationQueue.main)
{
(response, data, error) in
print(response!)
if let httpResponse = response as? HTTPURLResponse {
let statusCode = httpResponse.statusCode
if statusCode==200 {
print("Connection Successful")
} else {
print("Connection Failed (!200)")
}
}
}
}
-----增加了更好的附加代碼理解-----
新:MySQL代碼
CREATE TABLE IF NOT EXISTS `tests` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`testName` varchar(255) DEFAULT NULL,
`testPop` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;
INSERT INTO `tests` (`id`, `testName`, `testPop`) VALUES
(1, 'Test 1', '0'),
(2, 'Test 2', '0'),
(3, 'Test 3', '0'),
(4, 'Test 4', '0'),
(5, 'Test 5', '0'),
(6, 'Test 6', '0'),
(7, 'Test 7', '0'),
(8, 'Test 8', '0'),
(9, 'Test 9', '0'),
(10, 'Test 10', '0'),
(11, 'Test 11', '0'),
(12, 'Test 12', '0');
舉例:在我從數據庫中如何接收,使用JSON。不知道這是否有幫助。斯威夫特3
func retrieveData() {
let getDataURL = "http://exampleip.org/tests.php"
let url: NSURL = NSURL(string: getDataURL)!
do {
let data: Data = try Data(contentsOf: url as URL)
jsonArray = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as! NSMutableArray
// Looping through jsonArray
for i in 0..<jsonArray.count {
// Create Test Object
let tID: String = (jsonArray[i] as AnyObject).object(forKey: "id") as! String
let tName: String = (jsonArray[i] as AnyObject).object(forKey: "testName") as! String
let tPop: String = (jsonArray[i] as AnyObject).object(forKey: "testPop") as! String
// Add Test Objects to Test Array
testArray.append(Test(testName: tName, andTestPop: tPop, andTestID: tID))
}
}
catch {
print("Error: (Retrieving Data)")
}
myTableView.reloadData()
}
什麼是'$ _POST [「a」]'應該等於? – bugfroggy
如果你正在編寫新代碼,** _ please_不要使用'mysql_ *'函數**。它們已經老化並且破損,在PHP 5.5中已經被棄用了(它已經很舊了,它甚至不再接收安全更新),並且在PHP 7中完全刪除了。此外,您的代碼可以廣泛應用於[SQL注入](https:// en .wikipedia.org/wiki/SQL_injection)攻擊。使用['PDO'](https://secure.php.net/manual/en/book.pdo.php)或['mysqli_ *'](https://secure.php.net/manual/en/book .mysqli.php)替換爲_prepared statements_和_parameter binding_。有關詳細信息,請參閱http://stackoverflow.com/q/12859942/354577。 – Chris
@bugfroggy多數民衆贊成在當我使用INSERT INTO VALUES不更新 – BroSimple