我在输入字符串时更新值时遇到问题。我想要更新的列“位置”是一种数据类型:varchar()在我的数据库中。我可以插入一个像“3”这样的数字,它会在数据库上更新。但是,当我插入像“SS14”这样的字符串时,它不会在数据库上更新,我将收到错误。我做错了什么?
<?php
try {
// verify request
if($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') throw new Exception ('No Xrequest');
require_once('db.php');
$q= 'UPDATE prestashop.ps_product SET location = %s WHERE id_product = %d';
$sql = sprintf($q, $_REQUEST['value'], $_REQUEST['id']);
$rs=$ib->exec($sql);
if (PEAR::isError($rs)) throw new Exception ("DB Request: ". $rs->getMessage());
die("1"); // exit and return 1 on success
} catch (Exception $e) {
print $e->getMessage();
} '
<td class="test" id="'.$r["product_id"].'"><font size=+2>
<b>'.$r["product_s_desc"].'</b></font></td>
<script>
var x;
var h = 0; // blur fires multiple times, use h to count and fire once
var url = 'up.php';
$(".test").on('click', function(d) {
d.stopPropagation();
var x = $(d.target);
x.html('<input id="edit" style="width: 40px;" value="'+x.text()+'">');
var this_id = x.context.id;
$("#edit").on('blur', function(d) {
if (h < 1) {
h = h+1;
d.stopPropagation();
$(d.target.parentElement).text(d.target.value);
$.get(url, {id: this_id, value: d.target.value})
.done(function(d){ if(d == undefined || d != 1) { alert('Something went wrong, check your data and results. '+d);}})
.fail(function(d){ alert('error');});
$(".edit").off('blur');
}
return false;
});
h = 0;
});
</script>
答案 0 :(得分:1)
在SQL语句中,字符串值必须用这样的引号括起来
$q= "UPDATE prestashop.ps_product SET location = '%s' WHERE id_product = %d";
请注意%s
您可以在所有数据值周围放置引号,但它们是围绕文本数据类型的强制要求。