我认为这是一个逃避问题或其他问题.当我执行查询并填充所有变量时,一切都很好,所有行都在DB中正确更新.
我查看了StackOverflow,让我在飞行查询中使用这些动态/构造,我就在我的绳索尽头.
我的东西看起来像这样:
$sql="UPDATE users SET ";
if (!empty($fname)) { "fname = '$fname', ";}
if (!empty($lname)) { "lname = '$lname', ";}
if (!empty($location)) { "location = '$location', ";}
if (!empty($url)) { "url = '$url', ";}
"WHERE id = '$id' LIMIT 1";
Run Code Online (Sandbox Code Playgroud)
当我打破查询以插入"IF"时,我不断得到以下内容:错误:您的SQL语法中有错误; 检查与MySQL服务器版本对应的手册,以便在第1行的''附近使用正确的语法
我回答了查询,并且由于一些奇怪的原因它不能完成,变量在查询开始之前就像是这样
fname ='Rob',lname ='Smith',location ='Jersey City,NJ',url =' http://somesite.com',UPDATE用户SET 错误:您的SQL语法中有错误; 检查与MySQL服务器版本对应的手册,以便在第1行的''附近使用正确的语法
对不起,如果我不清楚.我会在需要的地方澄清.我是新生的.谢谢!
在您设置的最后一件事之后,不允许使用逗号.
一个简单的解决方案是:
$set = array();
if (!empty($fname)) { $set[] = "fname = '$fname'";}
if (!empty($lname)) { $set[] = "lname = '$lname'";}
if (!empty($location)) { $set[] = "location = '$location'";}
if (!empty($url)) { $set[] = "url = '$url'";}
if(!empty($set)) {
$sql = "UPDATE users SET ";
$sql .= implode(', ', $set)
$sql .= " WHERE id = '$id' LIMIT 1";
}
Run Code Online (Sandbox Code Playgroud)
哦,并确保你在查询中推断的变量是SQL安全的; 否则你有一个SQL注入问题.
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |