gpt4 book ai didi

php - 从mysql切换到mysqli后,Ajax的更新语句不能正常工作,但没有显示的错误

转载 作者:可可西里 更新时间:2023-11-01 07:32:43 25 4
gpt4 key购买 nike

这个问题已经有了答案:
When to use single quotes, double quotes, and backticks in MySQL
12个答案
我有一个与mysql很好的代码,但已经切换到mysql i它不再运行。数据从select按钮正确地显示在表中,当我得到保存的gif(因此调用ajax)时,它看起来像在工作,但是update语句不会更新数据库。
似乎不起作用的部分是saveedit.php:

<?php
require_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));
?>

主页面是
<?php
require_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连接到数据库并处理结果集创建(数据库连接详细信息在文件中,但未在此处发布):
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;
}
}
?>

我现在已经将dbcontroller改为下面的代码,以简化并尝试抛出错误,但仍然一无所获
<?php
class 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;
}
}
?

>

最佳答案

删除列名周围的单个qout:

$sql = "UPDATE php_interview_questions SET $column = '$value' WHERE id=$id)";

或者如果列名中有特殊字符,请使用反勾号对其进行转义。
$sql = "UPDATE php_interview_questions SET `$column` = '$value' WHERE id=$id)";

如果 id是一个数值,那么您也不需要单个qout。

关于php - 从mysql切换到mysqli后,Ajax的更新语句不能正常工作,但没有显示的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29713842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com