0
我正在构建一个CMS,并且我已经编写了几个函数来处理在脚本中弹出的一些sql任务。功能如下:在一个函数中生成可变数量的变量
function execute_sql_query($stmt,$types,$var1,$query_success,$object_name,$sql_action)
{
if(mysqli_stmt_bind_param($stmt, $types, $var1))
{
if(!mysqli_stmt_execute($stmt))
{
echo 'MySQL Execution Error: ' . $object_name . '<br>';
$query_success = FALSE;
echo "<br />";
}
else
{
echo $object_name . ' successfully ' . $sql_action . '<br>';
}
}
else
{
echo 'MySQL Bind Error: ' . $object_name . '<br>';
$query_success = FALSE;
}
}
function sql_close($stmt,$query_success,$mysqli)
{
mysqli_stmt_close($stmt);
if ($query_success)
{
echo 'All changes were successfully saved!<br>';
mysqli_commit($mysqli);
}
else
{
echo 'No changes were made to the database because of detected errors<br>!'
mysqli_rollback($mysqli);
}
}
的代码被称为脚本如下:
mysqli_autocommit($mysqli, FALSE);
$query_success = TRUE;
if($stmt = mysqli_prepare($mysqli, "DELETE FROM galleries WHERE gal_num = ?"))
{
$types = 's';
$object_name = "Galleries";
$sql_action = "deleted";
execute_sql_query($stmt,$types,$gal_del,$query_success,$object_name,$sql_action);
}
sql_close($stmt,$query_success,$mysqli);
现在这个工程,因为它是应该和它为我节省了大量的输入赫克。我只有一个问题就是这种方法。
在此查询中只有一个参数被绑定。有些会更改数据库表中的3,5甚至12个不同的字段。我写这个函数的方式只能处理一个。如果一个查询处理的不仅仅是这些,我将不得不为每个绑定不同数量参数的每个函数编写另一个函数。这主要是复制和粘贴工作,但它会否定将其放入函数中的有用性。
当它涉及到的类型,这简直是一个字符串,所以如果查询绑定5个参数,我可以简单地给它
$type = 'sssss';
不是问题。我还没有找到我如何能够为将要绑定的变量做到这一点。有没有办法,我可以以某种方式喂给我的函数一个范围或变量数组(函数内的函数可能吗?),它会自动生成它们,所以我可以保持所有这些查询在一个函数?
说出是否需要绑定3个参数。我给它类似如下:
$types = 'sss';
$bind_vars = 3;
而在函数内部它会产生:
if(mysqli_stmt_bind_param($stmt, $types, $var1, $var2, $var3))
可以这样做?提前感谢你的帮助。
非常感谢您的回答。我一直在玩与这个解决方案非常相似的阵列,但似乎无法做到这一点。我的问题是//做些事情。 :)据我了解,mysqli_stmt_bind_param()是一个内置函数,它绑定了给定变量中包含的参数。如果我提供需要绑定的值的数组,我该如何让它在foreach()循环中正确绑定它们? – Insomniaboy
我想我完全误解了你,我会试着编辑我的答案,以便为你获得一些有价值的东西。 –
太棒了。谢谢一堆。能够使它与此一起工作。 – Insomniaboy