我正在创建一个简单的PHP脚本来在我的数据库中插入一些值。为此,我创建了一个数据访问对象来发送要插入的对象。对象的值插入到我的数据库中,但抛出此异常:Only variables should be passed by reference
。
我怎么解决?
对象
class Local{
private $id;
private $nome;
private $telefone;
private $endereco;
private $numero;
private $bairro;
private $cidade;
private $tipoLocal;
private $status;
private $image;
//gets and sets
插入
/** insert the object */
public function insert(Local $local){
$stm = $this->conexao->prepare("INSERT INTO locais (nome, telefone,
endereco, numero, bairro,
cidade_id, tipo_local_id,
status, image)
VALUES (?,?,?,?,?,?,?,?,?)");
$stm->bindParam(1, $local->getNome());
$stm->bindParam(2, $local->getTelefone());
$stm->bindParam(3, $local->getEndereco());
$stm->bindParam(4, $local->getNumero());
$stm->bindParam(5, $local->getBairro());
$stm->bindParam(6, $local->getCidade()->getId());
$stm->bindParam(7, $local->getTipoLocal()->getId());
$stm->bindParam(8, $local->getStatus());
$stm->bindParam(9, $local->getImage());
$stm->execute();
if($stm){
return 1;
}else{
return 0;
}
}
插入行动
if (!empty($_POST)){
//post
$nome = $_POST["nome"];
$telefone = $_POST["telefone"];
$endereco = $_POST["endereco"];
$numero = $_POST["numero"];
$bairro = $_POST["bairro"];
$cidadeId = $_POST["cidade_id"];
$tipoLocalId = $_POST["tipo_local_id"];
//instancia de objetos
$local = new Local();
$cidade = new Cidade();
$tipoLocal = new TipoLocal();
$local->setNome($nome);
$local->setTelefone($telefone);
$local->setEndereco($endereco);
$local->setNumero($numero);
$local->setBairro($bairro);
$local->setStatus(1);
$local->setImage($telefone.".jpg");
//cidade
$cidade->setId($cidadeId);
$local->setCidade($cidade);
//tipo local
$tipoLocal->setId($tipoLocalId);
$local->setTipoLocal($tipoLocal);
//imagem do usuario
$arquivo = isset($_FILES["file"]) ? $_FILES["file"] : FALSE;
$type = $arquivo["type"];
$arr;
if(!$arquivo) {
$arr = array("status" => 0, "msg" => "Você não pode acessar essa imagem diretamente");
}elseif ($type != "image/jpg" && $type != "image/png" && $type != "image/jpeg") {
$arr = array("status" => 0, "msg" => "Não é um tipo de imagem válida");
}else{
if(isLocalExist($local) == 0){
$insere = insert($local);
if($insere == 1){
$diretorio = "../imagens/";
copy($arquivo["tmp_name"], $diretorio.$telefone.".jpg");
$arr = array("status" => $insere, "msg" => "Inserido com sucesso");
}else{
$arr = array("status" => $insere, "msg" => "Não foi possível inserir");
}
}else{
$arr = array("status" => 0, "msg" => "Local já cadastrado!");
}
}
echo json_encode($arr);
}else{
$arr = array("status" => 0, "msg" => "Post is empty!");
echo json_encode($arr);
}
/** verifica se o local ja esta cadastrado */
function isLocalExist(Local $local){
$dao = new LocalDAO();
$existe = $dao->isLocalExiste($local->getNome(),
$local->getTipoLocal()->getId(),
$local->getCidade()->getId(),
$local->getEndereco(),
$local->getTelefone());
return $existe;
}
/** insert object */
function insert(Local $local){
$dao = new LocalDAO();
$inserido = $dao->insert($local);
return $inserido;
}
异常
<br />
<b>Strict Standards</b>: Only variables should be passed by reference in
<b>/opt/lampp/htdocs/TelefonesUteis/dao/LocalDAO.php</b> on line
<b>22</b>
<br />
<br />
<b>Strict Standards</b>: Only variables should be passed by reference in
<b>/opt/lampp/htdocs/TelefonesUteis/dao/LocalDAO.php</b> on line
<b>23</b>
<br />
<br />
<b>Strict Standards</b>: Only variables should be passed by reference in
<b>/opt/lampp/htdocs/TelefonesUteis/dao/LocalDAO.php</b> on line
<b>24</b>
<br />
<br />
<b>Strict Standards</b>: Only variables should be passed by reference in
<b>/opt/lampp/htdocs/TelefonesUteis/dao/LocalDAO.php</b> on line
<b>25</b>
<br />
<br />
<b>Strict Standards</b>: Only variables should be passed by reference in
<b>/opt/lampp/htdocs/TelefonesUteis/dao/LocalDAO.php</b> on line
<b>26</b>
<br />
<br />
<b>Strict Standards</b>: Only variables should be passed by reference in
<b>/opt/lampp/htdocs/TelefonesUteis/dao/LocalDAO.php</b> on line
<b>27</b>
<br />
<br />
<b>Strict Standards</b>: Only variables should be passed by reference in
<b>/opt/lampp/htdocs/TelefonesUteis/dao/LocalDAO.php</b> on line
<b>28</b>
<br />
<br />
<b>Strict Standards</b>: Only variables should be passed by reference in
<b>/opt/lampp/htdocs/TelefonesUteis/dao/LocalDAO.php</b> on line
<b>29</b>
<br />
<br />
<b>Strict Standards</b>: Only variables should be passed by reference in
<b>/opt/lampp/htdocs/TelefonesUteis/dao/LocalDAO.php</b> on line
<b>30</b>
<br />
答案 0 :(得分:1)
不确定,但试试这个
public function insert(Local $local){
$stm = $this->conexao->prepare("INSERT INTO locais SET nome = :nome, telefone = :telefone, endereco = :endereco, numero = :numero, bairro = :bairro, cidade_id = :cidade_id, tipo_local_id = :tipo_local_id, status = :status, image = :image");
$stm->bindValue(':nome', $local->getNome());
$stm->bindValue(':telefone', $local->getTelefone());
...
$stm->execute();
if($stm){
return 1;
}else{
return 0;
}
}
如果有帮助,请告诉我