【问题标题】:my php form not sending data to myphpadmin我的 php 表单没有向 phpmyadmin 发送数据
【发布时间】:2018-10-23 00:20:52
【问题描述】:

我正在尝试构建一个 wordpress 插件,该插件将允许管理员在创建表单和处理 php 代码后从管理页面创建用户,我刷新了我的 wordpress 但没有错误,但在填写表单并单击后注册按钮它显示页面未找到,我已将分类br.php 和 demo.php 放在同一个文件夹中,但它仍然无法正常工作

这是我的名为 classfiedbr.php 的 php 代码

<?php
/**
* @package ClassifiedBr
*/
/*
Plugin Name: ClassifiedBr
Plugin URI: http://britchi.com/plugin
Description: This is my first Attempt on writting a custom plugin
Version: 1.0.0
Author: *Bright* C Godwin 
Author URI: http://britchi.com/plugin
License: GPLv2 or later
Text Domain: classifiedbr-plugin
*/
add_action('admin_menu', 'classifiedbr_setup_menu');


function classifiedbr_setup_menu(){
        add_menu_page( 'ClassifiedBr Page', 'ClassifiedBr', 'manage_options', 'classifiedbr', 'classifiedbr_init' );
}

function classifiedbr_init(){
    echo '<form action="demo.php" method="post" />';
    echo "<h1>Britchi Tracking</h1>";
    echo '<p>';
    echo 'Costumers Name (required) <br/>';
    echo '<input type="text" name="cname"/>';
    echo '</p>';
    echo '<p>';
    echo 'Tracking number (required) <br/>';
    echo '<input type="text" name="ctracking"/>';
    echo '</p>';
    echo '<p>';
    echo 'Email (required) <br/>';
    echo '<input type="email" name="cemail" />';
    echo '</p>';
    echo '<p>';
    echo 'Recived Port (required) <br/>';
    echo '<input type="text" name="crport" />';
    echo '</p>';
    echo '<p>';
    echo 'Delivered Port (required) <br/>';
    echo '<input type="text" name="cdport" />';
    echo '</p>';
    echo '<p>';
    echo 'Current Location (required) <br/>';
    echo '<input type="text" name="clocation" />';
    echo '</p>';
    echo '<p>';
    echo 'Destination (required) <br/>';
    echo '<input type="text" name="cdestination". />';
    echo '</p>';
    echo '<p><input type="submit" name="cregistered" value="Register"></p>';
    echo '</form>';




}

?>

那么这是我的 demo.php

<?php

define('DB_NAME', 'class');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

if (!$link) {
    die('Could not connect: ' . mysql_error());
}

$db_selected = mysql_selected_db(DB_NAME, $link);

if (!$db_selected) {
    die('Can\'t use ' . DB_NAME . ': ' . mysql_error());
}

$cname = $_POST['cname'];
$cemail = $_POST['cemail'];
$ctracking = $_POST['ctracking'];
$crport = $_POST['crport'];
$cdport = $_POST['cdport'];
$cname = $_POST['clocation'];
$cname = $_POST['cdestination'];

$sql = "INSERT INTO demo (cname, cemail, ctracking, erport, cdport, clocation, cdestination) VALUES ('$cname', 'cemail', 'ctracking', 'crport', 'cdport', 'clocation', 'cdestination')";

if (!mysql_query($sql)) {
    die('ERROR: ' . mysql_error());
}

mysql_close();
?>

这是页面

enter image description here

这是我从页面得到的错误消息

enter image description here

这是我保存文件的文件夹

enter image description here

我已尝试在这里搜索,但问题与我自己的问题(my php form not insert to phpmyadmin)有关,但尚未解决,所以我希望有人能帮助我,谢谢

【问题讨论】:

  • 页面demo.php不是你说的地方
  • @smith 我刚刚上传了文件夹的截图
  • 这是拼写错误的mysql_selected_db() 应该是mysql_select_db() 并且它们可能是其他错误,尤其是mysql_*() 函数已在PHP 7 开头的版本中被删除。新代码应该改为使用 PDO 编写。始终在开发和测试代码时启用错误显示。在你的脚本顶部error_reporting(E_ALL); ini_set('display_errors', 1);,你会看到 PHP 抱怨一个未定义的函数,也许还有其他错误。
  • 我注意到 INSERT 中的大多数变量也缺少它们的$。但是您使用的方法是不安全的,最终可能导致您的服务器和数据库受到损害。在 PDO 中使用带有参数的 prepare()/execute() 是解决方案 - 请参阅 How can I prevent SQL injection in PHP 注意您的数据库被命名为 class 也许这是一个课程作业,PDO 不适合您,或者您的讲师更喜欢旧的 mysql_*() API...
  • @MichaelBerkowski 即使将 mysql_selected_db() 更改为 mysql_select_db() 它仍然显示相同的错误

标签: php wordpress forms phpmyadmin


【解决方案1】:

只需在您的 demo.php 中进行以下更改,然后将两个文件都放在 Wordpress 目录的 wp-admin 中。

<?php

define('DB_NAME', 'class');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);



if (!$link) {
    die('Can\'t use ' . DB_NAME . ': ' . mysqli_error($link));
}

   $cname = $_POST['cname'];
   $cemail = $_POST['cemail'];
   $ctracking = $_POST['ctracking'];
   $crport = $_POST['crport'];
   $cdport = $_POST['cdport'];
   $clocation = $_POST['clocation'];
   $cdestination = $_POST['cdestination'];

   $sql = "INSERT INTO demo (cname, cemail, ctracking, crport, cdport,  clocation, cdestination) VALUES ('$cname', '$cemail', '$ctracking', '$crport', '$cdport', '$clocation', '$cdestination')";

if (!mysqli_query($link, $sql)) {
    die('ERROR: ' . mysqli_error($link));

}

   mysqli_close($link);
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-26
    • 2018-12-19
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2021-08-15
    相关资源
    最近更新 更多