新手 - 尝试从JQuery中更新数据库记录

时间:2015-01-11 05:30:26

标签: php jquery

希望这只需要一个灵魂的两分钟答案。

PHP网页显示数据库记录的内容。这很好。数据库打开,并为给定的$ refno正确显示记录。

我想添加的一个功能是更新该记录(用“X”替换状态字段中的任何内容),按Ctrl + Shift + Z.

我发现了一些用于侦听Ctrl + Shift + Z键组合的JQuery,这也有效。但是什么不起作用的是更新!

代码(如下)包含警报(仅用于测试目的)。

如果我省略了UPDATE的行,那么警报会触发,所以我可以告诉我到达了那个脚本。 如果我将行包含在UPDATE中,则不会触发警报,也不会更新记录。

我的错误是什么?

<script type="text/javascript">
//CTRL+Shift+z combo
$(document).keydown(function(e){
    if( e.which === 90 && e.ctrlKey && e.shiftKey ){
    alert('Whhooppie!'); 
        UPDATE TestTable SET status='X' WHERE refno='$refno';
    }
}); 
</script>

非常感谢你选择这个。还没有成功 - 我真的是一个新手,并且在过去的几个小时里一直在努力去理解这一切。失败了。

你肯定知道我想做什么(在给定$ refno的记录上将状态更新为“X”)并且我确信你的编码方向正确。但是我需要使用我的数据库,表和字段名来本地化你的代码,还有一些我不理解的东西。

在你的第一段代码中,我猜我不需要关于单击按钮的行,因为这是由Ctrl + Shift + Z触发的。所以我只用你的&amp; .ajax部分替换了我错误的UPDATE行。我也猜测“炸玉米饼”只是一个例子,但我可能是错的。 (如上所述,所有新东西都适合我。)

所以我的代码现在是:

<script type="text/javascript">
//CTRL+Shift+z combo
$(document).keydown(function(e){
if( e.which === 90 && e.ctrlKey && e.shiftKey ){
$.ajax({
url: "my_php_page.php",
     data: {id:1,value:"&refno"},
     method: "post"
  })
  .done(function(data) {
     alert(data); 
  });
}
}); 
</script>

对于my_php_page.php: 我用实际的数据库名称替换了“test”(如下所示为xxx), 将数据库密码放在引号之间(如下所示为yyy), 用实际的表名替换“my_table”, 并更改了“value =?where table_id =?”如下:

<?php
// print_r($_POST); 

$dsn  = 'mysql:host=localhost;dbname=xxx';   
$user = 'root';
$pass = 'yyy'; 

$db = new PDO($dsn, $user, $pass);

$id      = isset($_POST['id'])    ? $_POST['id']    : ''; 
$value   = isset($_POST['value']) ? $_POST['value'] : '';  

$success = false; 

if (!empty($id) && !empty($value)) {

$query = "update TestTable set status='X' where refno='$value'";

$stmt = $db->prepare($query);
$success = $stmt->execute(array($value,$id));
}

if ($success) echo "it worked!";
     else echo "it did not work...!";; 

?>

(我需要双倍;;在最后一行吗?)

当按下Ctrl + Shift + Z时,我得不到“它工作了!”也没有“它不起作用......!”,并且记录没有更新。

我确定我必须要靠近,但我哪里出错。

再次,非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

你用jquery标记它,所以我使用了jquery ......

阅读本页:http://api.jquery.com/jquery.ajax/

并且:http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

并且:http://www.explainxkcd.com/wiki/index.php/327:_Exploits_of_a_Mom

<button id="do_stuff">do stuff!</button>

<script>
   $("#do_stuff").on('click',function(){

      $.ajax({
         url: "my_php_page.php",
         data: {id:1,value:"tacos"},
         method: "post"
      })
      .done(function(data) {
         alert(data); 
      });
   }); 
</script>

然后在my_php_page.php

<?php

// print_r($_POST); 

$dsn  = 'mysql:host=localhost;dbname=test';   
$user = 'root';
$pass = ''; 

$db = new PDO($dsn, $user, $pass);

$id      = isset($_POST['id'])    ? $_POST['id']    : ''; 
$value   = isset($_POST['value']) ? $_POST['value'] : '';  

if (!empty($id) && !empty($value)) {

   $query = "update my_table set value = ? where table_id = ? "; 
   $stmt  = $db->prepare($query);

   // run the query and bind the values 
   $success = $stmt->execute(array($value,$id));

   if ($success) echo "it worked!";
            // else echo "it did not work...!"; 
            else echo $stmt->errorInfo()[2];
}
else echo "post params were blank"; 

?>

这完全适用于表格架构,如...

create table my_table (
    table_id   int, 
    value      varchar(20)
 );

 insert into my_table values (1,'one');