无法将值更新为字符串

时间:2017-02-09 13:24:32

标签: javascript php jquery mysql

我在输入字符串时更新值时遇到问题。我想要更新的列“位置”是一种数据类型: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>

1 个答案:

答案 0 :(得分:1)

在SQL语句中,字符串值必须用这样的引号括起来

$q= "UPDATE prestashop.ps_product SET location = '%s' WHERE id_product = %d";

请注意%s

周围的单引号

您可以在所有数据值周围放置引号,但它们是围绕文本数据类型的强制要求。