PHP / MySQL条件插入不插入

时间:2013-07-08 13:06:48

标签: php mysql

尝试使用准条件插入工作。我在数据库中有三种不同类型的元素,created_at日期是唯一键。构建数据库的人对每个表(课程,系列,包)使用相同的结构,因此我必须依赖created_at字段来获取唯一值。

情况是我要插入一个新行,但我不知道它是在purchase_lessons,downloaded_series还是purchase_packages表中。我知道$ item_current(这是从$ _POST返回的日期 - 在另一部分工作),我知道$ user_id(同样的原因)。但这不是插入新行:

$is_lesson = mysql_real_escape_string(mysql_query("SELECT id FROM lessons WHERE created_at LIKE \"$item_current\""));
$is_series = mysql_real_escape_string(mysql_query("SELECT id FROM series WHERE created_at LIKE \"$item_current\""));
$is_package = mysql_real_escape_string(mysql_query("SELECT id FROM packages WHERE created_at LIKE \"$item_current\""));
$lesson_rows = mysql_num_rows($is_lesson);
$series_rows = mysql_num_rows($is_series);
$package_rows = mysql_num_rows($is_package);
$lesson_result = mysql_fetch_array($is_lesson);
$series_result = mysql_fetch_array($is_series);
$package_result = mysql_fetch_array($is_package);
$lesson_id_to_insert = $lesson_result['id'];
$series_id_to_insert = $series_result['id'];
$package_id_to_insert = $package_result['id'];

if ($lesson_rows > 0) {
    mysql_query("INSERT INTO purchased_lessons VALUES ($user_id,$lesson_id_to_insert])");
} else if ($series_rows > 0) {
    mysql_query("INSERT INTO purchased_series VALUES ($user_id,$series_id_to_insert)");
} else if ($package_rows > 0){
    mysql_query("INSERT INTO purchased_packages VALUES ($user_id,$package_id_to_insert)");
}

我太近了,我想不能看到树林。它只是不会执行插入。

3 个答案:

答案 0 :(得分:0)

试试这样:

mysql_query("INSERT INTO purchased_lessons VALUES (\"$user_id\",\"$lesson_id_to_insert\")");

在每个插入查询中添加引号。

答案 1 :(得分:0)

在您的代码顶部也是错误的更改以下内容,因此您从mysql_real_escape_string返回值中mysql_query了。

$is_lesson = mysql_real_escape_string(mysql_query("SELECT id FROM lessons WHERE created_at LIKE \"$item_current\""));

阅读

$is_lesson = mysql_query("SELECT id FROM lessons WHERE created_at LIKE \"$item_current\"");

答案 2 :(得分:0)

删除mysql_real_escape_string(....) 那是试图逃避返回的资源句柄,没有必要,可能会引起后面的mysql_num_rows()问题。

我不会打扰使用现在已弃用的mysql_ *调用的警告,因为很明显你维护的是一个不是由你编写的现有旧系统。