【问题标题】:Php Mysql command won't executephp Mysql命令不会执行
【发布时间】:2015-02-15 02:17:11
【问题描述】:

我一生都无法理解如何做到这一点。我正在尝试将 $vo 对象的信息放入我的 $requete 然后执行它,但我不断收到 Catchable fatal error: Object of class Vo could not be converted to string

代码如下:

<?php

class Dao{

function __construct(){


}


function createOrder($vo){

$server="localhost";
$user = 'root';
$pass = '';
$db   = 'test';

$db = new PDO("mysql:host=$server;dbname=$db", $user, $pass);

$name=$vo->name;

$requete=$db->prepare("INSERT INTO ha(name, address, city, country, phone, selection) VALUES ($vo->name, $vo->address, $vo->city, $vo->country, $vo->$phone, $vo->selection)";
$db->exec($requete)or die ("failure");
echo "success";


}
}

?>

【问题讨论】:

  • $vo 来自哪里?
  • vo 是一个对象,它来自这里: name=$name; $this->地址=$地址; $这个->城市=$城市; $这个->国家=$国家; $这个->电话=$电话; $this->selection=$selection; } } ?>
  • 尝试 '$vo->city' 甚至 $var= $vo->city 然后将 $var 传递给查询

标签: php html mysql pdo


【解决方案1】:

试试下面的字符串:

$requete = $db-prepare("insert into ha (name,address,city,country,phone,selection) values ('$vo->name', '$vo->address', '$vo->city', '$vo->country', '$vo->$phone', '$vo->selection')");

您需要引用这些值。要了解为什么... 假设一个用户的名字是:

小乔治·约翰逊

你能明白为什么你需要引用这个吗?这是因为如果名称中包含逗号,则 SQL 语句将被误解。

错误:

值(George Johnson, Jr.,榆树街 123 号)

对:

值('George Johnson, Jr.'、'123 Elm Street')

【讨论】:

    【解决方案2】:

    试试这个:

    $requete=$db->prepare("INSERT INTO ha(`name`, `address`, `city`, `country`, `phone`, `selection`) VALUES ($vo->name, $vo->address, $vo->city, $vo->country, $vo->$phone, $vo->selection)";
    $db->exec($requete)or die ("failure");
    

    【讨论】:

      【解决方案3】:

      更改您的代码并使用问号作为您准备好的变量的占位符。并且您的预准备语句中有语法错误,您不能使用预准备语句并使用您的 pdo 执行预准备语句 $db-&gt;exec 应该是 $requete-&gt;execute

      $name=$vo->name;
      $address=$vo->address;
      $city=$vo->city;
      $country=$vo->country;
      $phone=$vo->phone;
      $selection = $vo->selection;
      
      $requete =$db->prepare("INSERT INTO `ha`(`name`, `address`, `city`, `country`, `phone`, `selection`) VALUES (?,?, ?, ?, ?, ?)");
      try {
       $requete->execute(array($name, $address, $city, $country, $phone, $selection));
      } catch (Exception $ex) {
       echo $ex->getMessage();
       die();
      }
      

      【讨论】:

        猜你喜欢
        • 2017-05-06
        • 1970-01-01
        • 2016-07-02
        • 2019-10-26
        • 2013-09-07
        • 2014-02-17
        • 1970-01-01
        • 1970-01-01
        • 2019-02-15
        相关资源
        最近更新 更多