使用Update table Set使用PHP更新表失败

时间:2017-11-16 14:52:24

标签: php mysql

我有一张表buildtracker连接到表单。我正在尝试编辑特定行中的数据,因此Update行。

该表包含以下列:ID key ,EnteredBy,INI

$user = 'root';
$pass = '';
$db = 'cl_db';
$conn = new mysqli('localhost', $user, $pass, $db) or die("Something bad happened.");

$rowID = $conn->real_escape_string($_POST['ID']);
$enteredBy    = $conn->real_escape_string($_POST['enteredBy']); 
$ini   = $conn->real_escape_string($_POST['ini']);

$query   = "UPDATE buildtracker SET 
          EnteredBy = '$enteredBy', INI = '$ini'
          WHERE ID = '$rowID' ";

$success = $conn->query($query); //insertion above ^ is the column names

if (!$success) {
    die("Couldn't enter data: ".$conn->error);
    }
return $query;

我没有在桌面上收到任何新数据或更新。我可以做些什么改进呢?

谢谢!

2 个答案:

答案 0 :(得分:1)

我不知道你的应用程序在这个代码的上下文中。

但是[强烈]建议使用预准备语句来防止任何SQL注入攻击,特别是使用来自$ _POST的直接数据(可以清理)。

检查是否在预准备语句中执行查询是通过$stmt->execute()

$user = 'root';
$pass = '';
$db = 'cl_db';
$conn = new mysqli('localhost', $user, $pass, $db) or die("Something bad happened.");
$prepare_query = "UPDATE buildtracker SET EnteredBy=?, INI=? WHERE ID=?";
$success = $conn->query($prepare_query); //insertion above ^ is the column names
if ($stmt = $conn->prepare($query)) {

    // Possible data sanitation can be done below
    $rowID = ($_POST['ID']);
    $enteredBy = ($_POST['enteredBy']); 
    $ini = ($_POST['ini']);

    // bind parameters
    $stmt->bind_param('ssi', $enteredBy, $ini, $rowID);

    // CHECKING is here: execute query (or die)
    // Can check also for ($stmt->affected_rows > 0)
    if (!$stmt->execute()){
        die("Couldn't enter data: ".$conn->error);
    }

    return $query;
}

使用PDO代替MySQLi可能会更好。

答案 1 :(得分:0)

正如我创建的所有错误 - 这是我的 # Uncomment the next line to define a global platform for your project platform :ios, '11.0' target 'App' do # Comment the next line if you're not using Swift and don't want to use dynamic frameworks use_frameworks! pod 'Firebase' pod 'FirebaseCore’ pod 'FirebaseAuth' pod 'FirebaseStorage' pod 'FirebaseDatabase' pod 'Material' pod 'Kingfisher', '~> 4.0' pod 'MapKitGoogleStyler' pod 'GeoFire', :git => 'https://github.com/firebase/geofire-objc.git' pod 'Mapbox-iOS-SDK', '~> 3.6' pod 'MapboxDirections.swift', '~> 0.12' #Pods for App target 'AppTests' do inherit! :search_paths # Pods for testing end target 'AppUITests' do inherit! :search_paths # Pods for testing end 声明没有指向正确的html元素的结果。

原创

$rowID

工作

$rowID   = $conn->real_escape_string($_POST['ID']); // ID is the COLUMN NAME

感谢您的意见和解答。

着手实施Hossam预防注射的更安全版本。我感谢你们所有人:)