变量失去价值

时间:2017-10-07 20:57:12

标签: php

我决定接受我给出的建议,并以PDO格式重写我的代码。一切正常,除了我似乎无法在UPDATE语句(PHP的最后一个块)中传递变量$ idvar和$ newvar的值。在POST之后,变量似乎正在丢失它们的值。我尝试过使用隐藏变量,但没有成功。我现在已经解决了这个问题3周了。我确定答案很简单,但问题是我更简单。任何指针都将非常感激。我希望我已经提供了足够的信息并且格式正确。谢谢,马克

<!DOCTYPE html>
<html>
<head>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.25.0/codemirror.min.css">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/froala-editor/2.7.0/css/froala_editor.pkgd.min.css" rel="stylesheet" type="text/css" />
    <link href="https://cdnjs.cloudflare.com/ajax/libs/froala-editor/2.7.0/css/froala_style.min.css" rel="stylesheet" type="text/css" />
</head>
<body id="main">



<?php
$dsn = 'mysql:dbname=my_db_name;host=127.0.0.1';
$user = 'my_user';
$password = 'my_password';

try {
    $conn = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
?>



<?php

$stmt = $conn->prepare('SELECT * FROM tblContent');
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>


<form method="POST">
<div style="text-align:center">
<select name="select1" onchange="this.form.submit()">


  <option value="null">Choose Page</option> 
  <?php
foreach($results as $row) { ?>
  <option value="<?php echo $row['contentID']; ?>"><?php echo $row['contentpage']; ?></option>
<?php
} ?>
</select>
</div> 

</form>



<?php
if(isset($_POST['select1'])) {
$idvar = $_POST['select1'];
}
?>






<?php
$stmt2 = $conn->prepare('SELECT * FROM tblContent WHERE contentID = :parameter');
$stmt2->bindParam(':parameter', $idvar, PDO::PARAM_INT);
$stmt2->execute();
$results2 = $stmt2->fetchAll( PDO::FETCH_ASSOC );
foreach( $results2 as $row ){
$newvar = $row["content"];
}
?>



    <!-- Include external JS libs. -->
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.25.0/codemirror.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.25.0/mode/xml/xml.min.js"></script>

    <!-- Include Editor JS files. -->
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/froala-editor/2.7.0/js/froala_editor.pkgd.min.js"></script>

    <!-- Initialize the editor. -->
    <script> $(function() { $('textarea').froalaEditor() }); </script>


<div class="fr-view">
<textarea>
<?php 
if(isset($_POST['select1'])) {
echo $row['content'];
}
?>
</textarea>
</div>  

</div>


<script>
    initSample();
</script>


<?php
/*variable values display ok here*/
echo $idvar;
$echo $newvar;
?>


<div style="text-align:center">

<form method = "POST">
<input type="submit" name="submit1" id="button" value="Submit" />

<?php
if(isset($_POST['submit1'])) {

/*variable values lost by this line*/

$stmt3 = $conn->prepare('UPDATE tblContent SET content = :content WHERE contentID = :id');
$stmt3->bindParam(':content', $newvar, PDO::PARAM_INT);
$stmt3->bindParam(':id', $idvar, PDO::PARAM_INT);
$stmt3->execute();
}

?>
</form>



</div>

</body>
</html>

1 个答案:

答案 0 :(得分:0)

需要参考:我添加了&amp;

$stmt3->bindParam(':content', &$newvar, PDO::PARAM_INT);
$stmt3->bindParam(':id', &$idvar, PDO::PARAM_INT)