Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql命令赢得';不执行_Php_Html_Mysql_Pdo - Fatal编程技术网

Php Mysql命令赢得';不执行

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

我一辈子都不知道该怎么做。我试图将$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')");
您需要引用这些值。为了理解为什么。。。 假设用户的名称为:

小乔治·约翰逊

你能明白为什么要引用这个吗?这是因为如果名称中有逗号,那么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传递给查询