參見英文答案 > When to use single quotes, double quotes, and back ticks in MySQL????????????????????????????????????12個
我有一個代碼,與mysql工作正常,但已切換到mysqli它不再運行.數據在選擇按鈕的表格中正確顯示,它看起來像我得到保存gif(因為正在調用Ajax),但是更新語句不會更新數據庫.
似乎沒有工作的部分是saveedit.php:
<?phprequire_once("dbcontroller.php");$db_handle = new DBController();$column=$_POST['column'];$value=$_POST['value'];$id=$_POST['id'];$sql = "UPDATE php_interview_questions SET `$column` = '$value' WHERE id=$id)";$result = mysqli_query ($conn, $sql) or die(mysqli_error ($dbc));?>
主頁是
<?phprequire_once("dbcontroller.php");$db_handle = new DBController();$sql = "SELECT * from php_interview_questions";$faq = $db_handle->runQuery($sql);?><html> <head> <title>PHP MySQL Inline Editing using jQuery Ajax</title> <script src="http://code.jquery.com/jquery-1.10.2.js"></script> <script> function showEdit(editableObj) { $(editableObj).css("background","#FFF"); } function saveToDatabase(editableObj,column,id) { $(editableObj).css("background","#FFF url(loaderIcon.gif) no-repeat right"); $.ajax({ url: "saveedit.php", type: "POST", data:'column=' column '&editval=' editableObj.innerHTML '&id=' id, success: function(data){ $(editableObj).css("background","#FDFDFD"); } }); } </script> </head> <body> <table class="tbl-qa"> <thead> <tr> <th class="table-header" width="10%">Q.No.</th> <th class="table-header">Question</th> <th class="table-header">Answer</th> </tr> </thead> <tbody> <?php foreach($faq as $k=>$v) { ?> <tr class="table-row"> <td><?php echo $k 1; ?></td> <td contenteditable="true" onBlur="saveToDatabase(this,'question','<?php echo $faq[$k]["id"]; ?>')" onClick="showEdit(this);"><?php echo $faq[$k]["question"]; ?></td> <td contenteditable="true" onBlur="saveToDatabase(this,'answer','<?php echo $faq[$k]["id"]; ?>')" onClick="showEdit(this);"><?php echo $faq[$k]["answer"]; ?></td> </tr> <?php } ?> </tbody> </table> </body></html>
使用db_controller.php連接到數據庫并處理結果集創(chuàng)建(數據庫連接詳細信息位于此處未發(fā)布的文件中):
function __construct() { $conn = $this->connectDB(); if(!empty($conn)) { $this->selectDB($conn); } } function connectDB() { $conn = mysqli_connect($this->host,$this->user,$this->password); return $conn; } function selectDB($conn) { mysqli_select_db($conn, $this->database); } function runQuery($query) { $conn = mysqli_connect($this->host,$this->user,$this->password); mysqli_select_db($conn, $this->database); $result = mysqli_query($conn, $query)or die(mysqli_error($conn)); while($row=mysqli_fetch_assoc($result)) { $resultset[] = $row; } if(!empty($resultset)) return $resultset; } function numRows($query) { $result = mysqli_query($conn, $query); $rowcount = mysqli_num_rows($result); return $rowcount; }}?>
我現(xiàn)在已經將dbcontroller更改為以下內容以簡化并嘗試拋出錯誤但仍然沒有得到任何結果
<?phpclass DBController { private $host = "***********"; private $user = "***********"; private $password = "**********"; private $database = "************"; function __construct() { $conn = mysqli_connect($this->host,$this->user,$this->password,$this->database) OR die (mysqli_connect_error()); } function runQuery($query) { $conn = mysqli_connect($this->host,$this->user,$this->password); mysqli_select_db($conn, $this->database); $result = mysqli_query($conn, $query)or die(mysqli_error($conn)); while($row=mysqli_fetch_assoc($result)) { $resultset[] = $row; } if(!empty($resultset)) return $resultset; } function numRows($query) { $result = mysqli_query($conn, $query); $rowcount = mysqli_num_rows($result); return $rowcount; }}?
>
解決方法:
刪除列周圍的單個qoutes名稱:
$sql = "UPDATE php_interview_questions SET $column = '$value' WHERE id=$id)";
或者,如果列中有特殊字符,請使用反引號來逃避它們.
$sql = "UPDATE php_interview_questions SET `$column` = '$value' WHERE id=$id)";
如果id是一個數值,你也不需要單個qoutes.
來源:https://www.icode9.com/content-2-262651.html