我正在尝试编写一个将插入一些数据的PHP函数Insertdata($table,$field,$data)
。这是我到目前为止所得到的:
insertdata.php
<?php
include('connection.php');
function Insertdata($table,$field,$data){
$field_values= implode(',',$field);
$data_values=implode(',',$data);
$sql="INSERT into". " ".$table." ".$field_values. "VALUES(".$data_values.")";
$result=$conn->query($sql);
}
?>
此功能的调用发生在另一页:
sample.php
<?php
include('../model/insertdata.php');
$table="country";
$field_values=array("country_name","status");
$data_values=array("usa",'1');
$sample=Insertdata($table,$field,$data);
if($result)
{
echo "inserted";
}
else
{
echo "not inseterd";
}
?>
每当我调用上面的函数时,都会抛出以下错误并且没有插入数据:
Notice: Undefined variable: field in /var/www/html/online_test/admin/view/sample.php on line 6
Notice: Undefined variable: data in /var/www/html/online_test/admin/view/sample.php on line 6
Warning: implode(): Invalid arguments passed in /var/www/html/online_test/admin/model/insertdata.php on line 6
Warning: implode(): Invalid arguments passed in /var/www/html/online_test/admin/model/insertdata.php on line 7
INSERT into country VALUES()
Notice: Undefined variable: conn in /var/www/html/online_test/admin/model/insertdata.php on line 10
Fatal error: Call to a member function query() on a non-object in /var/www/html/online_test/admin/model/insertdata.php on line 10
我是PHP新手,也是学习过程中的新手。我需要一些建议如何让这个工作。
答案 0 :(得分:2)
在sample.php
更改
$sample=Insertdata($table,$field,$data);
到
$sample=Insertdata($table,$field_values,$data_values);
将解决大部分错误,$field
和$data
未在sample.php
中定义。最后的错误与$ conn有关,这可能是connection.php
答案 1 :(得分:2)
这段代码有很多错误,首先:
$table="country";
$field_values=array("country_name","status");
$data_values=array("usa",'1');
$sample=Insertdata($table,$field,$data);
$field
和$data
不存在。确保传递正确的变量名称。
此外,$conn
在Insertdata()
上下文中未知,您必须将此变量作为参数传递或将其设为全局。
此外,SQL语法都错了。 INSERT into country country_name,statusVALUES(usa,1)
不是有效的SQL。确保您正确格式化查询,并且还要过滤SQL Injection。
例如:
$fields = implode('`, `', $field);
$values = implode("', '", array_map(function ($val) use ($conn) { return $conn->real_escape_string($val); }, $data));
$sql = "INSERT INTO `{$table}` (`{$fields}`) VALUES ('{$values}')";
答案 2 :(得分:1)
您的代码中存在很多问题,首先是修改后的代码:
修改功能:
<?
function Insertdata($table,$field,$data)
{
$field_values= implode(',',$field);
$data_values=implode("','",$data);
$sql= "INSERT INTO $table (".$field_values.")
VALUES ('".$data_values."') ";
$result=$conn->query($sql);
}
修改函数调用:
$table = "country";
$field = array("country_name","status");
$data = array("usa",'1');
$result = Insertdata($table,$field,$data);
if($result)
{
echo "inserted";
}
else
{
echo "not inseterd";
}
?>
<强>的问题:强>
Insertdata()
函数您正在使用VALUES作为简单字符串,您需要在字符串值之间使用引号,否则它将显示为VALUES (usa,1)
这应该是VALUES ('usa','1')
或{ {1}}。
您在函数参数VALUES ('usa',1)
,undefined variable
中使用了$field
,两者都没有定义,这应该是$data
,$field_values
。
第三,您正在使用未定义的变量$data_values
,失败条件应为$result
而不是$sample
。
由于您未在函数参数中使用$result
,范围有限,您将收到致命错误
答案 3 :(得分:0)
<?php
include('../model/insertdata.php');
$table = "country";
$field_values = array("country_name","status");
$data_values = array("usa",'1');
$sample=Insertdata($table, $field_values, $data_values);
if($result)
{
echo "inserted";
}
else
{
echo "not inseterd";
}
?>
<?php
include('connection.php');
function Insertdata($table,$field,$data){
$field_values= implode(',',$field);
$data_values=implode(',',$data);
$sql="INSERT INTO ".$table." (".$field_values.") VALUES (".$data_values.")";
$result=$conn->query($sql);
}
?>
答案 4 :(得分:0)
调用函数时,您只是错误地配置了变量。
$table="country";
$field_values=array("country_name","status");
$data_values=array("usa",'1');
$sample=Insertdata($table,$field_values,$data_values);
答案 5 :(得分:0)
在所有这些答案中,您都遇到了类似的错误,即 1)注意:未定义的变量:conn 2)警告:mysqli_query()期望参数1为mysqli,为null 这两个错误是为了避免它们尝试此操作:
功能:
<?php
function Insertdata($table,$field,$data,$conn)
{
$field_values= implode(",",$field);
$data_values=implode(",",$data);
$sql= "INSERT INTO $table (".$field_values.") VALUES (".$data_values.")";
$result=$conn->query($sql);
}
if($result){
echo "inserted";
} else {
echo "not inseterd";
}
?>
函数调用:
<?php
$table = "country";
$field = array("country_name","status");
$data = array("'usa'","'1'");
$result = Insertdata($table,$field,$data,$conn);
?>
使用此代码来避免这两个错误。
答案 6 :(得分:0)
function InsertRecordToTable($tableName='',$fieldNames='')
{
$fields = implode(',', array_keys($fieldNames));
$values = implode(',', mysqli_escape_string(array_values($fieldNames)));
$insertQuery = "INSERT INTO ".$tableName.'('.$fields.') Values '.'('.$values.')';
}
尝试通过传递参数的函数示例
$field['FirstName'] = 'Manoj';
$field['LastName'] = 'Kiran';
$field['Age'] = '21';
Insertrecord('testtable',$field);
插入记录很好
答案 7 :(得分:-2)
尝试一下:
<?php
$conn = mysqli_connect('localhost','root','','kailash');
$table = "country";
$field = array("country_name","status");
$data = array("usa",'1');
$field_values= implode(',',$field);
$data_values = implode("','",$data);
$sql = "INSERT INTO $table($field_values)VALUES('$data_values')";
$result = $conn->query($sql);
?>