【问题标题】:PHP / MYSQL Add button to columnPHP / MYSQL 将按钮添加到列
【发布时间】:2011-09-13 14:15:41
【问题描述】:
列一列二列三列四列五列六 一二三四 0 '按钮在这里'

正如您在上面看到的,我有六列,其中五列包含某种文本,第六列包含一个按钮。我的最终目标是让第六列包含三个按钮,就像这张图片HERE 显示的那样。这些按钮将允许我编辑、删除以及可能的其他功能。

不过,现在我只是好奇如何使用下面的代码使按钮出现在最后一列中:

<?php

// Create variables to retrieve the POST data

$ID= $_POST['Input1'];
$Email= $_POST['Input2'];
$Name= $_POST['Input3'];
$Company= $_POST['Input4'];
$Price= $_POST['Input5'];

// Connect to the database

mysql_connect ("localhost","Username","Password") or die ('Error: ' . mysql_error());

echo "connected to database!";

mysql_select_db ("Database");

// Insert data into table

$query = "INSERT INTO CustomerInformation (ID, Email,Name,Company,Price,Tab Count,Action) VALUES(
'NULL', '".$ID."', '".$Email."', '".$Name."', '".$Company."', '".$Price."', "Form input type = "button" (something like this!) )";

// Above is my best attempt... I'm sure it's nowhere close (sorry!).

mysql_query($query) or die ('Error updating database');

echo "Database updated successfully!";

?>

【问题讨论】:

  • 您图片的链接好像坏了。
  • 为什么要在数据库中放一个按钮??
  • 看一下图片...我正在尝试创建类似于此图片的内容,以便能够删除或编辑任何行。
  • 您在脚本中混合行为,插入 MySQL 数据库不会自动生成 UI。您需要一个用于从数据库中获取数据并显示 UI 的代码路径;以及处理来自 UI 的输入和保存状态(插入/更新/删除)的另一个路径。

标签: php mysql button


【解决方案1】:

将您的代码更改为这样,以使其安全且实用:

<?php
// Connect to the database

mysql_connect ("localhost","Username","Password") 
  or die ('Error: ' . mysql_error());

echo "connected to database!";

mysql_select_db ("Database");

// Insert data into table

$Email= mysql_real_escape_string($_POST['Input2']);
$Name= mysql_real_escape_string($_POST['Input3']);
$Company= mysql_real_escape_string($_POST['Input4']);
$Price= mysql_real_escape_string($_POST['Input5']);

$action = mysql_real_escape_string('insert php code for button here');

$query = "INSERT INTO CustomerInformation 
         (Email,Name,Company,Price,Tab Count,Action) 
         VALUES
         ('$Email', '$Name', '$Company', '$Price', '$action') ";
mysql_query($query) or die ('Error updating database');

echo "Database updated successfully!";

?>

请注意,您不需要将id 插入表中。如果您有一个自动增量字段 id,那么 MySQL 会为您自动创建一个 id。
mysql_real_escape_string() 为您转义 。始终在查询中用' 单引号或mysql_real_escape_string() 将您的$var 括起来将工作! 永远不要将它用于列/表或数据库名称,仅用于值。

请参阅:这些问题以了解更多信息:

一般的 SQL 注入:How does the SQL injection from the "Bobby Tables" XKCD comic work?
使用动态表名时防止 SQL 注入:How to prevent SQL injection with dynamic tablenames?

【讨论】:

  • @Johan 当我使用 mysql_real_escape_string() 尝试运行此代码时出现很多错误: 警告:mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'vhostswww'@'localhost'(使用密码:NO)在 /www/solidwebhost.com/f/a/r/farinaevan/htdocs/AddDataToTable.php 第 6 行警告:mysql_real_escape_string() [function.mysql-real-escape -string]:无法在第 6 行的 /www/solidwebhost.com/f/a/r/farinaevan/htdocs/AddDataToTable.php 中建立到服务器的链接
  • @Evan 1000x 抱歉,您需要使用mysql_real_escape_string() 连接到数据库之前,修复了答案
  • @Evan,错误提示您无法连接到 MySQL,因为用户 vhostswww 没有对 localhost 的访问权限,您需要在本地主机上明确授予用户 vhostswww,授予用户%(全部)包括本地主机。
  • @Johan - 为了使其正常工作,我必须将最后一列(带有按钮的那一列)设为特殊类型吗?现在它是一个类型:字符串,我会得到一个错误“更新数据库错误”。对于我的输入按钮代码,我使用的是: $action = mysql_real_escape_string( ' ""');我发誓我不是白痴,但是这个 PHP 东西还没有和我一起点击!非常感谢你一直陪着我
  • @Evan,不带 mysql_real_escape_string() 试试看:$action = ' "&lt;input type="submit" name="delete_5" value="Delete this ugly thing" /&gt;"';
【解决方案2】:

嗯,你需要做一两件事(取决于...)。您可能必须命名提交按钮:

<input type="submit" name="delete" value="Delete this ugly thing" />

比在 PHP 中,如果你可以这样做:

if (isset($_POST["delete]") {
    mysql_query("DELETE FROM ...");
}

但是,如果表中有更多记录,则还必须添加带有记录 ID 的输入。这有点复杂,因为表格覆盖了整个表格,而您不知道要选择什么 ID 输入。一种可能的解决方案是通过记录的 id 来命名输入按钮,例如:

<input type="submit" name="delete_5" value="Delete this ugly thing" />

比在 PHP 中你可以这样做:

foreach ($_POST as $name => $value) {
    if (preg_match("/^delete_[0-9]+$/", $name)) {
        $idArray = explode("_", $name);
        $id = addSlashes($idArray[1]);

        mysql_query("DELETE FROM ... WHERE id = '" . $id . "'");
    }
}

【讨论】:

  • @James,这是不是:stackoverflow.com/questions/332365/… 响铃?
  • 当然不要忘记 SQL 注入保护,但这些是必须在每个 PHP 动态 SQL 查询中实现的基本功能
  • 我很困惑我应该把“"这行放在哪里。当试图将它放在添加了所有其他数据的行中时,我收到了 T_String 错误。也许我输入的数据不正确?
  • 那个输入就是按钮。如果您将其直接插入到 PHP 代码中,请不要忘记转义“ - 使用 \”。
  • 我是这样写的(包括引号):""
猜你喜欢
  • 2013-03-29
  • 1970-01-01
  • 1970-01-01
  • 2012-01-03
  • 1970-01-01
  • 2021-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多