【问题标题】:Make a button perform an SQL statement使按钮执行 SQL 语句
【发布时间】:2012-01-25 19:19:43
【问题描述】:

我在这里碰碰运气。我目前正在开发一个网站,人们应该能够在该网站上发送消息并从该人的个人资料页面将用户添加为朋友。我有一个按钮,即使用基本的<button></button> 子句[添加为朋友]。最好的解决方法是什么?

例如,当单击 [添加此朋友] 按钮时,我想要 SQL 语句:INSERT into friends (uid, fid, isapproved) VALUES ('1', '2', '1')

我现在只使用 php 和 MySQL。任何建议都会受到欢迎。谢谢各位。

【问题讨论】:

  • 哪一部分不清楚?
  • 我对费尔南多在下面的回答有同样的想法。我只是想看看还有哪些其他方法可用,因此提出了建议请求。

标签: php mysql button


【解决方案1】:
  • 按钮调用javascript 函数。
  • Javascript 函数发布(AJAX,可能使用 jquery)到 php 文件 'addfriend'
  • PHP 文件执行mysql,返回JSON
  • Javascript 函数调用callback 并显示返回值

【讨论】:

  • 谢谢!我目前没有使用 AJAX,但可以预见到它的未来,所以你的回答很有帮助。
【解决方案2】:

如果你不使用 AJAX,这样的东西就足够了。

addfriend.tpl.php 文件

<form method="post" action="action_addfriend.php">
 <input type="hidden" value="<?=$userid;?>" name="userid" />
 <input type="submit" value="Add as Friend" />
</form>

action_addfriend.php 文件

<?php

if ($_POST)
{  
  $fid = htmlspecialchars(stripslashes($_POST['userid']));
  $fid = mysql_real_escape_string($fid);
  include("your_connectdb_file.php");
  mysql_query("INSERT into friends (uid, fid, isapproved) VALUES ('1', '$fid', '1')");
  mysql_free_result();
}
?>

【讨论】:

  • 我同意这个方法,但我建议不要使用上面的查询。此查询对 SQL 注入敞开大门。使用 PDO 或 mysqli 和准备好的语句来保护 $fid 变量中用户提供的数据。
  • 好吧,如果您在生产服务器中编程,则必须进行验证和清理。顺便说一句,你应该使用 -> mysql_real_escape_string()
  • @ray:没有任何东西可以阻止那个 SQL
  • 我的目标是这样的。谢谢! +1 非 AJAX 答案。
  • @Fernando,我看到您使用的是 mysql_real_escape_strings,而不是非常糟糕的旧 mysql_escape_strings。你是对的,它是安全的,我对下意识的反应感到内疚,而没有更仔细地注意到那个重要的细节。不要让我的错误影响我仍然强烈推荐使用 PDO 或 mysqli 以及准备好的语句来防止注入以及与原始非 OO mysql 功能相比的许多其他好处。
【解决方案3】:

如果您只使用 PHP 作为脚本语言而没有任何 javascript,那么您应该将该按钮直接指向处理给定 user_id 的添加朋友请求的页面。

对于在同一页面上工作的朋友,您需要使用 javascript 和 Ajax 对 php 文件进行后台调用,该文件将静默处理请求并在成功时返回响应。

【讨论】:

    【解决方案4】:

    发送带有 POST 和/或 GET 数据的 AJAX 请求到负责添加好友的 url,例如:mysupersocialnetwork.org/friend/add/ 这个页面请求会触发php,php会执行脚本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      相关资源
      最近更新 更多