2016-06-30 47 views
0

我的工作與PHP和MySQL在網站上,第一次我用XAMPP預覽我的網站的建設,一切都在這裏工作的罰款(XAMPP的PHP版本是5.7 ),問題是當我通過FTP上傳我網站的內容時,INSERTUPDATE查詢不能用於我的PHP腳本。MySQL的INSERT和UPDATE查詢不工作的PHP 5.2.17

我讀過有關這兩個版本之間的兼容性問題,FTP服務器使用PHP 5.2.17一些文章。

SELECT查詢服務器工作正常,所以,登錄到數據庫不是問題。

這是使用UPDATE我的代碼:

include_once 'db_post.php'; 
$mysqli = new mysqli(DATA_HOST, DATA_USER, DATA_PASSWORD, DATA_DATABASE); 

$catTitle = mysqli_real_escape_string($mysqli, $_POST['catName']); 
$catDesc = mysqli_real_escape_string($mysqli, $_POST['catDesc']); 
$catID = mysqli_real_escape_string($mysqli, $_GET['ID']); // I get this in the redirection, the value isn't in the POST form 

$cT = "UPDATE categorias SET NombreCat = '$catTitle', DescripcionCat = '$catDesc', ImagenCat = 'no_image.png' WHERE IDCat = $catID"; 

if ($mysqli->query($cT) === TRUE) { header("Location: ../management.php?Action=ManageCategories&Edit=Successful"); } 
else { header("Location: ../management.php?Action=ManageCategories&Edit=Error"); } 

重定向經過錯誤並沒有被保存在數據庫中。

我的DB的另一個信息是,我使用的,而不是MyISAM數據,據稱是在phpMyAdmin推薦的InnoDB。

此外,當我試圖插入行,也沒有查詢:

include_once 'db_post.php'; 
$mysqli = new mysqli(DATA_HOST, DATA_USER, DATA_PASSWORD, DATA_DATABASE); 

$catTitle = mysqli_real_escape_string($mysqli, $_POST['catName']); 
$catDesc = mysqli_real_escape_string($mysqli, $_POST['catDesc']); 

$cT = "INSERT INTO categorias (IDCat, NombreCat, DescripcionCat, ImagenCat) VALUES (null, '$catTitle', '$catDesc', 'no_image.png')"; 

if ($mysqli->query($cT) === TRUE) { header("Location: ../management.php?Action=ManageCategories&Add=Successful"); } 
else { header("Location: ../management.php?Action=ManageCategories&Add=Error"); } 

所以現在的問題是,這是正確的形式在MySQL查詢該版本的PHP?

+1

那麼MySQL會給你什麼樣的錯誤,作爲它沒有成功的原因? –

+0

爲什麼使用10年前的PHP版本?這只是乞求你的網站被黑客入侵。那,並將用戶數據插入到您的數據庫沒有檢查它... – miken32

+0

@ miken32託管服務器所有者不想更新他們的PHP,我不能從我的房子做它。 :( –

回答

0

您應該使用prepared statements避免SQL注入黑客,你也應該捕獲錯誤消息。 PDO比mysqli更容易:

include_once 'db_post.php'; 
$dsn = sprintf("mysql:host=%s;dbname=%s", DATA_HOST, DATA_DATABASE); 
$db = new PDO($dsn, DATA_USER, DATA_PASSWORD); 

if (empty($_GET["ID"])) { 
    $action = "Add"; 
    $stmt = $db->prepare("INSERT INTO categorias (IDCat, NombreCat, DescripcionCat, ImagenCat) VALUES (null, ?, ?, 'no_image.png')"; 
    $result = $db->prepare([$_POST["catName"], $_POST["catDesc"]); 
} else { 
    $action = "Edit"; 
    $stmt = $db->prepare("UPDATE categorias SET NombreCat = ?, DescripcionCat = ?, ImagenCat = 'no_image.png' WHERE IDCat = ?"; 
    $result = $stmt->execute([$_POST["catName"], $_POST["catDesc"], $_GET["ID"]]); 
} 

if ($result === true) { 
    header("Location: ../management.php?Action=ManageCategories&$action=Successful"); 
} else { 
    error_log("Database error: " . $stmt->errorInfo()); 
    header("Location: ../management.php?Action=ManageCategories&$action=Error"); 
} 

現在,如果您有錯誤,請檢查您的日誌。

+0

有關使用PDO是有用的安全的查詢方法,檢查我的代碼後,我發現這個問題是在SQL語句中,我的表名,例如「類別」,並在我的代碼是「類別」,問題是在XAMPP中工作正常的上層C,但不在服務器中。 –