2017-03-09 17 views
0

我試圖用PHP更新表中的一行,雖然我這不是我第一次,但更新功能不起作用。如何正確更新PHP中的MySQL表

這是PHP代碼:

<?php 
header("Access-Control-Allow-Origin: *"); 

$server = "localhost"; 
$username = "username"; 
$password = "dbpass"; 
$database = "dbname"; 

$con = mysql_connect($server, $username, $password) or die ("Could not connect: " . mysql_error()); 

mysql_select_db($database, $con); 

$q=mysqli_query("UPDATE `phonegap_login` SET `firstname` = 'Alhia' WHERE `reg_id` =50;"); 


if($q) 
{ 
echo "success"; 
} 
else 
{ 
echo "failed"; 
} 
?> 

順便說一下,如果你試圖INSERT操作,它會工作:

$q=mysql_query("insert into `phonegap_login` (`reg_date`, `firstname`, `lastname`, `email`, `password`) values ('test', 'test', 'test', 'test', 'test')"); 

如何解決呢?插入正在工作,更新行不是。 我正在使用reg_id = 50進行測試。

+3

你混合mysqli_query和的mysql_query。只能使用mysqli_query。 mysql_query已棄用 –

+0

@MaartenvanMiddelaar謝謝!它的工作,你可以回答這個問題,所以我可以標記你的答案:D – Fala

+2

這是主觀的,所以不把它作爲一個答案...但我建議使用PDO來代替。在線PDO的例子通常也會更好地遵循「最佳實踐」(例如命名參數),例如, http://stackoverflow.com/questions/18655706/pdo-with-insert-into-through-prepared-statements –

回答

1

你在混合mysqli_query和mysql_query。只能使用mysqli_query。的mysql_query已被棄用

$con = mysqli_connect($server, $username, $password) or die ("Could not connect: " . mysqli_error()); 

mysqli_select_db($database, $con); 

$q=mysqli_query("UPDATE `phonegap_login` SET `firstname` = 'Alhia' WHERE `reg_id` =50;"); 

或者,面向對象:

$mysqli = new mysqli($server, $username, $password, $database); 

if ($mysqli->connect_errno) { 
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; 
} 

$q = $mysqli->query("UPDATE `phonegap_login` SET `firstname` = 'Alhia' WHERE `reg_id` =50;"); 

或者,PDO:

$connectionString = 'mysql:host=' . $server . ';dbname='.$database; 
try { 
    $db = new PDO($connectionString, $user, $pass); 
} catch (PDOException $e) { 
    echo "Failed to connect to Database: (" . $e->getCode() . ") " . $e->getMessage(); 
} 
$q = $db->query("UPDATE `phonegap_login` SET `firstname` = 'Alhia' WHERE `reg_id` =50;"); 
+1

避免在'mysql_query'和'mysqli_query'之間混淆的一個技巧是始終使用面向對象的接口:'$ db-> query(...)''不會意外地使用過時的接口,因爲缺少'i性格。由於這個原因,它也不那麼冗長和易於閱讀。 – tadman

+1

真的。面向對象就是這樣。 –