Php MySQL不是';t更新表 免责声明:这是一项任务。我不是要求人们给我明确的代码,只是为了得到足够的帮助,以便我可以看到错误,纠正错误,并防止将来出现类似的错误。

Php MySQL不是';t更新表 免责声明:这是一项任务。我不是要求人们给我明确的代码,只是为了得到足够的帮助,以便我可以看到错误,纠正错误,并防止将来出现类似的错误。,php,mysql,sql,ajax,database,Php,Mysql,Sql,Ajax,Database,我正在做一个任务,要求我在数据库中创建一个表,用几个条目填充它,然后创建一个表单,并允许用户通过表单更新数据库(这是非常基本的内容)。除了更新之外,用户还应该在提交更改后看到他们的条目 要求之一是使用自动递增主键。由于这个键对用户没有真正的重要性,我认为没有必要让它成为他们在提交中要包含的内容(因此没有字段)。此外,由于它应该是自动递增的,所以提供手动添加键的选项实际上没有意义 所以我把一小部分字段和MySQL语句放在一起,我认为所有这些都应该可以工作。当我有一个字段要添加一个键(在本例中为id

我正在做一个任务,要求我在数据库中创建一个表,用几个条目填充它,然后创建一个表单,并允许用户通过表单更新数据库(这是非常基本的内容)。除了更新之外,用户还应该在提交更改后看到他们的条目

要求之一是使用自动递增主键。由于这个键对用户没有真正的重要性,我认为没有必要让它成为他们在提交中要包含的内容(因此没有字段)。此外,由于它应该是自动递增的,所以提供手动添加键的选项实际上没有意义

所以我把一小部分字段和MySQL语句放在一起,我认为所有这些都应该可以工作。当我有一个字段要添加一个键(在本例中为
id\u no
)并在其中手动输入一个值时,提交的内容将成功存储到数据库中。但是,当我删除该选项时,不会向数据库提交任何内容

我应该注意,我的主键字段
id\u no
标记为自动递增,所以这不是问题所在。根据我的理解以及我通过手动插入实体看到的情况,自动递增的值应该自动更新,而无需将它们包含在任何
insert
语句中

以下是我到目前为止得到的(这是我的第一个MySQL/PHP任务,请温柔一些):


参与者数据库
$(文档).ready(函数(){
$(“表单”).validate();
});
名字:

姓氏:
照片:

马上你的
其中id\u no
缺少一个

mysql_query("UPDATE Actors 
  SET last_name  = '".mysql_real_escape_string($last_name). "',
  first_name = '".mysql_real_escape_string($first_name)."'
  WHERE id_no =".$id_no
  );

立刻,你的
中的id\u no
缺少一个class='s

mysql_query("UPDATE Actors 
  SET last_name  = '".mysql_real_escape_string($last_name). "',
  first_name = '".mysql_real_escape_string($first_name)."'
  WHERE id_no =".$id_no
  );

插入时,如果存在默认值,则不需要包含id\u no,这是设置自动增量时的情况。因此,从insert语句中删除id_no

id为no的逻辑需要更改。或者有一个新的命令/动作,将id_no设置为0,这表示这是一个新记录;或者通过唯一索引确定并设置一个真正的主键,并搜索该主键以确定记录是否已经存在


祝您好运,感谢您的免责声明:-)

当您插入时,如果存在默认值(即设置自动增量时的情况),则不需要包含id\u no。因此,从insert语句中删除id_no

id为no的逻辑需要更改。或者有一个新的命令/动作,将id_no设置为0,这表示这是一个新记录;或者通过唯一索引确定并设置一个真正的主键,并搜索该主键以确定记录是否已经存在


祝你好运,谢谢你的免责声明:-)

不是答案,但太大了,无法发表评论

以下是一些给教授留下深刻印象的一般技巧:

1) array_key_exists有些冗余,您可以使用以下工具使检查更具可读性:

$photo = isset($_REQUEST['photo']) ?: NULL;
(请注意,此快捷语法仅适用于PHP5.3+)

2) 您在查询调用上没有错误处理,这意味着您只是假设它们总是成功的。数据库操作只有一种成功的方法(“不要失败”),而失败的方法几乎是无限的。始终检查返回值是否存在故障:

$result = mysql_query($sql) or die(mysql_error());
                           ^^^^^^^^^^^^^^^^^^^^^^
应至少在每一个db操作上

3) 感谢您注意到sql注入问题,并至少使用mysql\u real\u escape\u string()来缓解这些问题


4) 对仍然使用mysql函数表示不满。切换到PDO或mysqli库,并使用准备好的语句和占位符,肯定会使该项目在教授看来更好看。

不是答案,而是太大而无法发表评论

以下是一些给教授留下深刻印象的一般技巧:

1) array_key_exists有些冗余,您可以使用以下工具使检查更具可读性:

$photo = isset($_REQUEST['photo']) ?: NULL;
(请注意,此快捷语法仅适用于PHP5.3+)

2) 您在查询调用上没有错误处理,这意味着您只是假设它们总是成功的。数据库操作只有一种成功的方法(“不要失败”),而失败的方法几乎是无限的。始终检查返回值是否存在故障:

$result = mysql_query($sql) or die(mysql_error());
                           ^^^^^^^^^^^^^^^^^^^^^^
应至少在每一个db操作上

3) 感谢您注意到sql注入问题,并至少使用mysql\u real\u escape\u string()来缓解这些问题


4) 对仍然使用mysql函数表示不满。切换到PDO或mysqli库并使用准备好的语句和占位符肯定会使该项目在教授看来更好看。

更新也应该只有一个
集<代码>更新表集合字段=值、字段=值等。
更新也应该只有一个
集合<代码>更新表格集合字段=值、字段=值等。