【发布时间】:2015-05-27 15:07:23
【问题描述】:
首先,jEditable 对我有用——我可以输入一个值,按 Enter 键,然后就可以看到表格中的新值了。但是,该值永远不会插入到数据库中。 据我了解,来自 jEditable 网站的 jQuery 代码
$(document).ready(function() {
$('.edit').editable('http://www.example.com/save.php');
});
我已更改为链接到我的 update.php 脚本
error_reporting(E_ALL ^ E_NOTICE);
session_start();
$servername = "localhost";
$username = "root";
$password = "";
$database = "database";
$conn = new mysqli($servername, $username, $password, $database);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$value = $_POST['value'];
$id = $_POST['id'];
echo $value;
$updateTest=$conn->query("UPDATE table SET column='".$value."' WHERE ID='".$id."'");
应该更新数据库,但没有任何反应。查看火狐的网络日志功能,可以看到并没有提交ID(我一开始不知道这个ID应该是从哪里来的,例子里什么都没有),但是值是那里。但是,服务器似乎没有响应。
也许表本身就是问题:
while($row = $results->fetch_assoc()) {
$ID = $row["ID"];
print '<tr>';
print '<td><div class="edit" data-pk="'.$ID.'">'.$row["column"].'</div></td>';
print '</tr>';
(我省略了 SELECT 语句,因为其他所有内容都显示正确)
遗憾的是,没有解释为什么 div 应该有一个 id - 这显然不是 POST 请求中提交的内容。
我用谷歌搜索了一下,但我找不到答案。这可能很明显,但我就是找不到。自从我将原来的准备好的语句更改为此之后,我也不再出现错误。
如果您能向我解释我的错误,我将非常感谢您的帮助,这样我以后就不再重复了。
如果互联网上有任何地方有 Jeditable 文档中提到的 save.php 文件的实际完整 (mysqli) 示例,并且您有链接(我当然没有找到它...) ,我也愿意。
【问题讨论】:
-
首先,使用准备好的语句!其次,
id应该在pk(代表primary key)中。第三,您的元素需要设置属性data-pk。第四,删除id。这是无效的 HTML,因为id值不能只是一个数字。 -
好吧,我的目标是在我让它工作后返回到准备好的语句。而且我从来没有意识到 ids 不能是数字,我通常对所有东西都使用类,这很高兴知道。无论如何,这是一些非常有用的信息,我会试试的,谢谢!但是..我会把
pk放在哪里?data-pk就是这个意思吗? -
在 HTML5 中,
id可以是一个数字 html.spec.whatwg.org/multipage/dom.html#the-id-attribute -
@KaloyanDoichinov 对不起。我想我应该在说话之前读过。该死,我现在有很多坏代码!
-
从技术上讲,您是正确的,但根据 4.01 规范 :)
标签: php jquery mysqli jeditable