【问题标题】:mysqli php post insert into databasemysqli php post插入数据库
【发布时间】:2013-08-24 11:42:18
【问题描述】:
Hello dear stackoverflow users,

我遇到了一个奇怪的问题。我有一个 2 页的表单。

第1页是index.php:

<form action="insert.php" method="post">
<div class="slider"><input type="checkbox" onclick="this.form.checkbox1.checked = this.checked;" id="slider" name="10001" value="10001"><label for="slider"></label></div>  
<input type="checkbox" value="127.20" id="checkbox1" name="chk"/>
<input type="submit">
</form>

第2页是insert.php

<?php
$q=$_GET["q"];
// Load Joomla! configuration file
require_once('configuration.php');
// Create a JConfig object
$config = new JConfig();
// Get the required codes from the configuration file
$server = $config->host;
$username   = $config->user;
$password   = $config->password;
$database = $config->db;

$con = mysqli_connect($server,$username,$password,$database);
if (!$con){
die('Could not connect: ' . mysqli_error($con));
}

mysqli_select_db($con,$database);

$q = mysqli_real_escape_string($con,$q);

// Save form input
$10001 = $POST_['10001'];
$sql_add = "INSERT INTO cypg8_testtest (10001) VALUES ('$10001')";
$result_add = $mysqli->query($sql_add);

// Close connection
mysqli_close($con);
?>

数据库表调用:cypg8_testtest

此表有 2 列,设置如下:

标识 | 10001

其中 id 是一列,10001 是一列。

我一直在网上寻找并尝试使用几种方法,包括:

但我不知道为什么它们都不起作用。我收到各种错误,例如意外 10001 或意外;

使用上面的代码,我得到以下错误: 解析错误:语法错误、意外的 '10001' (T_LNUMBER)、期望变量 (T_VARIABLE) 或 '$'

我想将第一个复选框中的值(value=10001)保存到表列 10001

提前感谢您的帮助。

编辑 1:

需要更改代码和数据库才能使其正常工作。

在数据库中,表列名需要以字母开头,因此将其从 10001 更改为 a10001

然后复选框名称也需要更改为 a10001 以使其与 db 表列对应。

保存表单输入也需要一些更改,这在代码中更容易看到。所以我把这两个代码放在下面方便参考。

第1页是index.php:

<form action="insert.php" method="post">
<div class="slider"><input type="checkbox" onclick="this.form.checkbox1.checked = this.checked;" id="slider" name="a10001" value="10001"><label for="slider"></label></div>  
<input type="checkbox" value="127.20" id="checkbox1" name="chk"/>
<input type="submit">
</form>

第2页是insert.php

<?php
$q=$_GET["q"];
// Load Joomla! configuration file
require_once('configuration.php');
// Create a JConfig object
$config = new JConfig();
// Get the required codes from the configuration file
$server = $config->host;
$username   = $config->user;
$password   = $config->password;
$database = $config->db;

$con = mysqli_connect($server,$username,$password,$database);
if (!$con){
die('Could not connect: ' . mysqli_error($con));
}

mysqli_select_db($con,$database);

$q = mysqli_real_escape_string($con,$q);

// Save form input
$a10001 = $_POST['a10001'];
mysqli_query($con,"INSERT INTO cypg8_testtest (a10001) VALUES ('".$a10001."')");

// Close connection
mysqli_close($con);
?>

感谢所有帮助我找到答案的人。特别感谢 Arian 提供的解决方案。

【问题讨论】:

    标签: php insert mysqli


    【解决方案1】:
     $10001 = $POST_['10001'];
    

    首先,POST不正确,应该是$_POST,你的下划线放错地方了。

    其次,变量应始终以字符开头...尝试使用 $a10001 代替

    第三,你必须将你的 SQL 字符串与你的变量连接起来。

    试一试:

    $a10001 = $_POST['10001'];
    $sql_add = "INSERT INTO cypg8_testtest (`10001`) VALUES ('".$a10001."')";
    

    最重要的:

    http://dev.mysql.com/doc/refman/5.1/en/identifiers.html

    列名不应仅由数字组成。

    【讨论】:

    • @hennysmafter 这有帮助吗?
    • 很抱歉我的回复迟了。我被叫离开电脑。我尝试了您的解决方案,但它给了我另一个错误:致命错误:在第 38 行对非对象调用成员函数 query()。第 38 行是 $result_add = $mysqli->query($sql_add);谢谢你的回答。
    • @hennysmafter 在第 38 行之前添加以下内容... echo $sql_add;并在此处粘贴它所说的内容。
    • INSERT INTO cypg8_testtest (10001) VALUES ('') 就是所说的。所以它不会添加复选框中的值。我不知道为什么不。
    • @hennysmafter 所以它没有获得 $a10001 的价值。
    【解决方案2】:

    尝试使用

    `col_name`  
    

    把你的表列名和表名括起来。那是键盘上波浪号(~)下的字符。 mysql用法推荐。

    【讨论】:

    • 我已将您的建议添加到我使用 Arian 的解决方案所做的更改中,并且我得到了与 Arian 的评论中描述的相同的错误。谢谢你的回答。
    猜你喜欢
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    相关资源
    最近更新 更多