Php-Mysql命令赢得';t执行


Php Mysql command won't execute

我一辈子都不明白该怎么做。我正试图将$vo对象的信息获取到我的$requete中,然后执行它,但我一直收到可捕获的致命错误:vo类的对象无法转换为字符串

这是代码:

<?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";

}
}
?>

尝试下面的字符串:

$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')");

您需要引用这些值。为了理解为什么。。。假设用户的名称为:

George Johnson,Jr.

你明白为什么需要引用这个吗?这是因为如果名称中有一个逗号,SQL语句就会被误解。

错误:

value(小乔治·约翰逊,埃尔姆街123号)

右:

value("George Johnson,Jr.","Elm Street 123")

试试这个:

$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");

更改代码并使用问号作为准备好的变量的占位符。并且您的prepared语句中有语法错误,您不能使用prepared声明,并且使用您的pdo来执行prepared陈述$db->exec应该是$requete->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();
}