2016-01-23 52 views
0

问题:我在使用PHP将输入更新到sql时遇到了问题,PHP将所有空值更新到我不想要的sql中。如何只更新提交按钮填充输入?

成就:所以我希望当用户提交数据为空或填充时,然后PHP可能能够拾取和更新只填充数据到我的SQL。我尝试使用输入value =“> PHP回声这里<”但它不会与textarea一起工作,所以我找不到任何解决方案,因为我是PHP和SQL的新手。试图找到类似的职位,但我不能让他们的工作就像我想:(

<?php include 'config/sqlconnect.php'; ?> 


     <form method="post" action"config/sqlconnect.php"> 
     </p>MainPage info</p> 
     <input type="text" name="mainPageInfo"/> 

     <br> 
     </p>MiddlePage info</p> 
     <textarea name="middlePageInfo"></textarea> 

     <br> 
     </p>Container info</p> 
     <input type="text" name="containerInfo"/> 

     <br> 
     </p>Content</p> 
     <input type="text" name="content"/> 

     <br> 
     </p>Second content</p> 
     <input type="text" name="secondContent"/> 


     <input type="submit" name="submit" class="btn-block"/> 
     <br> 
     </form> 

在PHP脚本

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = "pass"; 
$dbname = "pagesDb"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
mysqli_set_charset($conn,"utf8"); 
$sql = "SELECT * FROM myPages"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
    $mainPageInfo = $row['mainPageInfo']; 
    $middlePageInfo = $row['middlePageInfo']; 
    $containerInfo = $row['containerInfo']; 
    $content = $row['content']; 
    $secondContent = $row['secondContent']; 
    } 
} else { 
    echo "0 results"; 
} 

if (isset($_POST['submit'])) { 
    $mainPageInfo = $_POST['mainPageInfo']; 
    $middlePageInfo = $_POST['middlePageInfo']; 
    $containerInfo = $_POST['containerInfo']; 
    $content = $_POST['content']; 
    $secondContent = $_POST['secondContent']; 

    $sql = "UPDATE myPages SET mainPageInfo='$mainPageInfo', 
           middlePageInfo='$middlePageInfo', 
           containerInfo='$containerInfo', 
           content='$content', 
           secondContent='$secondContent' 
           WHERE id=0"; 

    if ($conn->query($sql) === TRUE) { 
     echo "Record updated successfully"; 
    } else { 
     echo "Error updating record: " . $conn->error; 
    } 

} 

$conn->close(); 
?> 

二尝试:它不以某种方式更新我的数据。 ..请帮助我试图超过8小时,没有结果:(

if (isset($_POST['submit'])) { 

    foreach($_POST as $name => $value) { 

     $sql = "UPDATE myPages SET $name = '$value' WHERE id=1"; 

    } 

    if ($conn->query($sql) === TRUE) { 
     echo "Record updated successfully"; 
    } else { 
     echo "Error updating record: " . $conn->error; 
    } 

} 

帮助,将不胜感激,谢谢大家!

+1

您需要测试一个输入字段是否已由用户'isset()'或'!设置! emprty()',然后根据输入的字段动态构建更新查询。您还需要从页面传回'id',以便每次更新表格中的正确行而不是使用'id = 0'的行 – RiggsFolly

+0

也仅仅是一点,'id'永远不为零,它们开始在一,假设这是一个自动增加列 – RiggsFolly

+0

@RiggsFolly这只是我的形式和PHP的一个例子,我不知道如何检查'!empty()'动态,因为我有20个字段,不认为做尽管1比1会是个想法,但我现在已将我的ID从0更改为1。我不需要多个ID,这是一个数据库,可以让我的'WORDING'显示在网站上。因此,我可以在cms上更新它们 – PizzaBoy

回答

1

以您的第二次尝试为起点。

刚刚使用POST数组而不是特定的问题是,在本例中,您将尝试更新数据库上名为submit的列,即您的提交按钮。稍后,页面上可能有数据属于2个或更多表格。

因此,创建一个控制数组,其中包含想要处理的表单中的所有字段名称。

$db_fields = array('mainPageInfo', 'middlePageInfo', 'containerInfo', 
        'content', 'secondContent'); 

$sql = ''; // will hold the query we build dynamically 

// was this a user sending data 
if ($_SERVER['REQUEST_METHOD' == 'POST') { 

    foreach($db_fields as $fieldname) { 

     if (! empty($_POST[$fieldname]) { 
      $sql .= "$fieldname = '{$_POST[$fieldname]}', "; 
     } 
    } 
} 

$sql = rtrim($sql, ','); // remove the trailing comma 

$sql = "UPDATE myPages SET $sql WHERE id=1"; 

if ($conn->query($sql) === TRUE) { 
    echo "Record updated successfully"; 
} else { 
    echo "Error updating record: " . $conn->error; 
}