可能重复:
How to include a PHP variable inside a MySQL insert statement
我想按名称选择Wordpress类别的类别ID。奇怪的是,如果我手动定义类别,它一切都很完美。
echo命令为我提供了类别名称,最后我在Variable $ catid中获得了类别ID。
但是,如果我通过表单发送它,echo命令给我与手动定义时完全相同的类别名称,但MySQL-Command不起作用,这意味着$ catid变量保持为空。
这里有没有人有这个想法,因为我无法理解为什么它在直接定义时起作用,而不是在完全相同的字符串通过表单发布时。下面的代码示例是我的代码的一部分,其中$ category变量通过表单传递。如果我要取消注释手动变量并对post变量进行注释,它将全部起作用。
// $category = "Manual"; // manually defined
$category = $_POST['category']; //defined through a form
echo $category;
$connect = mysql_connect(localhost,abc,def);
if (!$connect) {
die('Could not connect: '.mysql_error());
}
mysql_select_db("abc");
$queryresult = mysql_query("SELECT * FROM `wp_terms` WHERE `name`='$category' LIMIT 0,1");
while($row = mysql_fetch_array( $queryresult )) {
$catid = $row[term_id];
}
答案 0 :(得分:0)
确认帖子数据的内容是个好主意,如下所示:
print_r($_POST); die;
这将允许您查看您的变量是否甚至出现在提交中,我的赌注是您没有通过它,或者它是以另一个名称(甚至是拼写错误)来实现的。
如果没有表单和处理代码,很难回答这个问题,但是你可以通过将可变内容转储到屏幕来至少对数据进行解密。
希望这有帮助。
PS:这是在浪费资源:
echo "$category";
您可以使用:
echo $category;
PPS:最好清理变量以防止SQL注入,这段代码非常危险:
$category = $_POST['category'];
mysql_query("SELECT * FROM `wp_terms` WHERE `name`='$category' LIMIT 0 , 1");
如果您的变量正确地从PPOST传递,请尝试解决您的SQL查询:
$query = sprintf("SELECT * FROM wp_terms WHERE name='%s' LIMIT 0,1", $category);
print_r($query); die;
然后,如果您有一些数据库运行的接口,请尝试抛出查询并检查错误和结果(只是为了确认您的检索语句)。
如果这样可以正常工作,那么你肯定知道它与你的SQL连接语句有关,你需要找到你的PHP版本并转储$ connect的值。您是在共享托管环境或您自己的私人服务器上运行此代码吗?