也许是一个奇怪的标题,但我有一种情况,我想要一个输出字符串(查询,可以是任何长度)来包含将在函数内定义的变量。基本上这样的事情,只有我不能(据我所知)称之为另一个论点,因为它是查询的一部分
function foo($var){
$name = 'Name';
echo($var);
}
[..]
foo('Hi my name is '.$name);
在我的情况下,需要在表格中添加最后插入行的id
,例如
public function query($sql){
foreach($sql AS $sqlString){
if(!$db->exec($sqlString)){
echo(self::throwError('MySql error',$sqlString,implode(":",$db->errorInfo())));
}else{
self::writeLog($table,$db->lastInsertId(),'update');
}
// Add this place i need some code to replace the $id from the call with the $db->lastInsertId() from the previous query
}
}
[..]
$defaults->query(Array("
INSERT INTO ".$table[1]." (m_id, m_title, m_link) VALUES ('','','".$val."')
","
INSERT INTO ".$table[3]." (nmp_id, nmp_project_id, nmp_media_id) VALUES ('','".$_POST['p_id']."','".$id."')
"));
我现在没有选择
答案 0 :(得分:0)
我不确定你要做什么,我会给你一个快速的解决方案面团,虽然它是一个肮脏的解决方案。
function foo($var) {
global $name;
$name = 'Name';
echo($var);
}
[..]
foo('Hi my name is '.$name);
请注意,在函数上,$ name被声明为全局变量(而不是像$ var那样的方法的局部变量)
答案 1 :(得分:0)
您当然可以在查询中使用该函数将替换的占位符:
'INSERT INTO ... %d'
然后:
$sql = sprintf($sql, $id);
但在我看来,整体上你的query
功能做得太多,而且/或者对它的工作感到困惑。这太复杂了。只需使query
函数执行一个具有正确错误处理的查询并返回插入ID,然后调用它两次:
$id = $defaults->query('INSERT ...');
$defaults->query("INSERT ... $id");