我试图将SQL查询插入到我的SQL数据库中,例如
mysqli_query($queryfromabove);
然后从另一个PHP文件开始,我会做这样的事情:
$sql="INSERT INTO awards(name,image,query,clm,type,number) VALUES ('".$_POST['name']."','".$_POST['image']."','".$_POST['query']."','".$_POST['column']."','".$_POST['condition']."','".$_POST['number']."')";
mysqli_query($conn,$sql);
问题是PHP变量没有通过。 (它存在于我称之为的文件中)我知道这是非常不正统的,可能不推荐,但有没有人知道这样做?
根据要求提供实际代码:
SELECT * FROM crts WHERE id='$crtid'
我已经回复了所有的POSTS并且知道他们有正确的数据。这里重要的POST变量是$ _POST [' query'],因为它包含:
$that = mysqli_fetch_assoc(mysqli_query($conn,"SELECT * FROM awards WHERE id=2"));
echo $that['query'].'<br>';
$crtid = $_SESSION['crt']['id'];
$query = $that['query'];
$thisquery = mysqli_query($conn,$query);
$finally = mysqli_fetch_assoc($thisquery);
print_r($finally);
然后,从另一个文件(借口草率变量名称,这是一个WIP):
var from, to;
$(document).on("change", "#from", function() {
// Reset the To date
$('#to').datepicker('setDate', null);
});
$(document).on("change", "#to", function() {
// Get the dates
from = document.getElementById('from').value;
to = document.getElementById('to').value;
});
ID 2是我用所有帖子插入的sql结果的id。
答案 0 :(得分:2)
使用准备好的声明。将以下内容放入DB:
INSERT INTO sample_db(query) VALUES ('SELECT * FROM users WHERE id=?')
然后,当你想要执行它时,首先准备它,将参数绑定到变量,然后执行它。
$stmt = mysqli_prepare($conn, $queryfromabove);
mysqli_stmt_bind_param($stmt, "s", $userID);
mysqli_stmt_execute($stmt);
如果您需要能够替换任意变量,可以使用preg_replace_callback
将字符串中的所有{$variable}
替换为相应全局变量的值。
$sql = preg_replace('/\{\$(\w+)\}/', function($matches) use ($conn) {
return mysqli_real_escape_string($conn, $GLOBALS[$matches[1]]);
}, $queryfromabove);
mysqli_query($conn, $sql);
答案 1 :(得分:0)
允许存储SQL查询字符串会使您的数据库遭受恶意攻击。请考虑使用存储过程 - 这是MySQL的一个示例。 http://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-stored-procedures.html