phpmysql插入空白而不是值
我有以下功能:phpmysql插入空白而不是值,php,mysql,insert,Php,Mysql,Insert,我有以下功能: function insert($database, $table, $data_array) { # Connect to MySQL server and select database $mysql_connect = connect_to_database(); mysql_select_db ($database, $mysql_connect); # Create column and data values for SQL command foreach ($da
function insert($database, $table, $data_array)
{
# Connect to MySQL server and select database
$mysql_connect = connect_to_database();
mysql_select_db ($database, $mysql_connect);
# Create column and data values for SQL command
foreach ($data_array as $key => $value)
{
$tmp_col[] = $key;
$tmp_dat[] = "'$value'";
}
$columns = join(",", $tmp_col);
$data = join(",", $tmp_dat);
# Create and execute SQL command
$sql = "INSERT INTO ".$table."(".$columns.")VALUES(". $data.");";
$result = mysql_query($sql, $mysql_connect);
# Report SQL error, if one occured, otherwise return result
if(mysql_error($mysql_connect))
{
echo "MySQL Update Error: ".mysql_error($mysql_connect);
$result = "";
}
else
{
return $result;
}
}
php中的值如下所示:
$content_table = "p_content";
$insert_array['title'] = $title;
$insert_array['content'] = $content;
$insert_array['url'] = $get_source;
$insert_array['video'] = $video;
$insert_array['date'] = $date;
insert(DATABASE, $content_table, $insert_array);
所有这些操作的结果都会添加一行,其中包含id(key、autoimcrement)、url和日期。标题、内容和视频为空。如果我回显标题,我会得到正确的结果,如果我变量_转储标题,我会得到字符串(15)“blablabla”,同样正确
现在,如果我手动设置$title=“asdf”;它正在正确插入。内容和视频也是如此
表结构
id int(8)无符号无优先级NULL自动增量
标题varchar(1000)是空
内容长文本是空
视频varchar(3000)是空
url varchar(300)是空
日期日期是空的尝试:
function insert($database, $table, $data_array)
{
# Connect to MySQL server and select database
$mysql_connect = connect_to_database();
mysql_select_db($database, $mysql_connect);
$cols = array();
$vals = array();
foreach ($data_array as $key => $value) {
$cols[] = "`" . $key . "`";
if (is_int($value) || is_float($value)) {
$vals[] = $value;
} else {
$vals[] = "'" . mysql_real_escape_string($value) . "'";
}
}
$sql = "INSERT INTO " . $table
. ' (' . implode(', ', $cols) . ') '
. 'VALUES (' . implode(', ', $vals) . ')';
$result = mysql_query($sql, $mysql_connect);
# Report SQL error, if one occured, otherwise return result
if(mysql_error($mysql_connect)) {
echo "MySQL Update Error: " . mysql_error($mysql_connect);
$result = ""; // FIXME should probably return false here
} else {
return $result;
}
}
重要
您的代码和上面的代码可能容易受到SQL注入的攻击。请阅读相关内容。尝试在变量中添加引号。:-)原因是MYSQL列类型设置为VARCHAR。插入数据需要在插入的内容周围加引号
B.T.W.如果这是新代码,我建议切换到MYSQLI或PDO库
$insert\u array
的输出是什么?尝试使用var\u dump
或print\u r
查看格式并确保SQL格式正确。数组([title]=>“asjgalkjhgfdkjas”。[content]=>lqejrhgojiehrgakekhlgkj[url]=>[video]=>[date]=>2013-02-17 00:45:46)这就是print_r的样子,我尝试过在不使用函数的情况下直接放入insert查询,但结果相同。这是库的一部分,无论如何,如果我手工编写每个变量oke的值,在引号$title=')(strip_tags($title))')处,insert效果非常好;好的,正如@Mr.Radical所说的,我们需要准确地说明您试图插入的内容。是否存在空值?您的字段允许空值,但您正在将值用引号“”括起来。