我没有为这个问题找到任何解决方案,所以我在这里问:我该如何解决?我的代码是:
function dbc()
{
mysql_connect("HOST", "USER", "MYPASS") or die(mysql_error());
mysql_select_db("DBNAME") or die(mysql_error());
}
dbc();
$id = rand(0, 99999999);
$type = 'mushroom';
$amount = '100';
$used = '1';
$qry = $db->prepare ( "INSERT INTO vouchers(id, code, type, amount, used)
VALUES(:id, :code, :type, :amount, :used)" );
$qry->bindParam ( ':id', $id );
$qry->bindParam ( ':code', $id );
$qry->bindParam ( ':type', $type );
$qry->bindParam ( ':amount', $amount );
$qry->bindParam ( ':used', $used );
$res = $qry->fetchAll ();
所以我问你,问题在哪里?
答案 0 :(得分:1)
不要将MYSQL与PDO混合使用。下面的代码将建立一个简单的PDO连接,因为除了不推荐使用的MySQL_之外,你似乎也在使用它。对于new PDO();
的DSN字段,输入mysql:dbname=*dbname*;host=*host*
,将 dbname 替换为您的数据库名称,将 host 替换为您的主机。另外,如果不这样做,try和catch函数很容易理解。在try函数中,脚本正在运行,catch函数捕获您获得的任何错误并将它们回显到屏幕。
function dbc()
{
try {
$db = new PDO("DSN", "USER", "MYPASS");
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
}
dbc();
$id = rand(0, 99999999);
$type = 'mushroom';
$amount = '100';
$used = '1';
$qry = null;
$qry = $db->prepare ( "INSERT INTO vouchers(id, code, type, amount, used)
VALUES(:id, :code, :type, :amount, :used)" );
$qry->execute(array(
':id' => $id,
':code' => $id,
':type' => $type,
':amount' => $amount,
':used' => $used
));
答案 1 :(得分:0)
您在prepare
上呼叫$db
,而$db
为空。你似乎在使用MySQL,这是非常弃用的。请使用更安全的MySQLi或PDO。
我认为您可能正在尝试使用PDO,但您无法将语法与MySQL混合使用。有关如何在PDO中正确初始化$db
变量的示例,请参阅this link。
答案 2 :(得分:0)
$db
时, $db->prepare()
为空。
$db = null; $qry = null; $sql = "INSERT INTO `d64952_s1`.`vouchers` (`id`, `code`, `type`, `amount`, `used`) VALUES (NULL, \'\', \'mushroom\', \'\', \'1\');"; $qry = $db->prepare ( "INSERT INTO vouchers(id, code, type, amount, used) VALUES(:id, :code, :type, :amount, :used)" );
看起来你也试图将mysql_ *与PDO混合在一起,但这也不起作用。