Php Mysql命令赢得';不执行
我一辈子都不知道该怎么做。我试图将$vo对象的信息获取到我的$requete中,然后执行它,但我一直得到可捕获的致命错误:vo类的对象无法转换为字符串 代码如下:Php Mysql命令赢得';不执行,php,html,mysql,pdo,Php,Html,Mysql,Pdo,我一辈子都不知道该怎么做。我试图将$vo对象的信息获取到我的$requete中,然后执行它,但我一直得到可捕获的致命错误:vo类的对象无法转换为字符串 代码如下: <?php class Dao{ function __construct(){ } function createOrder($vo){ $server="localhost"; $user = 'root'; $pass = ''; $db = 'test'; $db = new PDO("mysql:h
<?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')");
您需要引用这些值。为了理解为什么。。。
假设用户的名称为:
小乔治·约翰逊
你能明白为什么要引用这个吗?这是因为如果名称中有逗号,那么SQL语句就会被误解
错:
价值(埃尔姆街123号,小乔治·约翰逊)
对:
价值('George Johnson,Jr.,'123 Elm Street')
试试这个:
$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");
更改代码并使用问号作为准备变量的占位符。如果您的预处理语句中存在语法错误,则无法使用预处理语句并使用pdo执行预处理语句$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();
}
$vo来自何处?vo是一个对象,它来自于这里:尝试“$vo->city”或甚至$var=$vo->city,然后将$var传递给查询