我使用此代码将一些数据插入到我的数据库中。 我根据mysqli调整了以前的代码,现在就使用PDO了。
对于2个参数name和id,我是否需要使用类似mysqli_real_escape_string和PDO的函数来转义它们?或者可以在查询中传递这些params direclty吗?
<?php
try
{
$pdo = new PDO('mysql:host='.$servername.';port='.$dbport.';dbname='.$dbname.'', $username, $decodedPwd);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$json = $_POST['jsonData'];
$id = $json["id"]
$name = $json["name"]
$pdo->beginTransaction();
// do request
$pdo->query('INSERT INTO test(id, name) VALUES ('$id', '$name')');
$pdo->commit();
echo 'Everything is OK';
}
catch(Exception $e)
{
$pdo->rollback();
echo 'An error occurred :<br />';
echo 'Error : '.$e->getMessage().'<br />';
echo 'N° : '.$e->getCode();
exit();
}
答案 0 :(得分:2)
你需要准备你的陈述,试试这个:
$query = $pdo->prepare('INSERT INTO test(id, name) VALUES (:theid, :thename)');
$query->execute(array(
'theid' => $id,
'thename' => $name
));
答案 1 :(得分:1)
您不必转义字符串,但您必须使用preared语句。
这是您的代码应该是什么。
import sys
print(sys.executable)
/usr/local/opt/python/bin/python2.7
请注意,事务对于单个查询而言是无用的,并且您报告错误的方式是错误的。
另外,如果$ json已经包含了查询的所有数据,则无需将其内容存储在单独的变量中。
答案 2 :(得分:0)
不行。您需要使用prepared statements或PDO::quote()。