我在这篇文章中收到错误:(抱歉我的英文不好,我来自德国!)
错误:Fatal error: Call to a member function bind_param() on a non-object in /users/ftf/www/ccache.php on line 44
来自ccache.php的代码的一部分
// Neues Datenbank-Objekt erzeugen
$db = @new mysqli( 'localhost', 'ftf', '***', 'ftf' );
// Pruefen ob die Datenbankverbindung hergestellt werden konnte
if (mysqli_connect_errno() == 0)
{
$sql = "INSERT INTO cache
('name', 'user', 'veroefentlichung', 'beschreibung', 'FTFcode', 'STFcode', 'TTFcode', 'type', 'lat', 'lon', 'address', 'link')
VALUES ('?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?')";
$eintrag = $db->stmt_init();
$eintrag = $db->prepare( …Run Code Online (Sandbox Code Playgroud) 我无法理解为什么会出现错误:"变量数与预准备语句中的参数数量不匹配".
我的代码看起来像这样:
$DB['con'] = new mysqli($$DB['host'],$DB['user'],$DB['pass'],$DB['base']);
$stmt=$DB['con']->prepare("insert into points(iduser,puncte,nume,email,telefon,ultimulpost)values('?',?,'?','?','?',(SELECT CURDATE()))");
$stmt->bind_param('sisss',$idm,$mynumber,$nume,$email,$tel);
$stmt->execute();
Run Code Online (Sandbox Code Playgroud) 我在使用 ODBC 的 PDO 语句时遇到问题。
我在 Windows Server 2003 和 PHP 5.4.x 中使用 SQL SERVER 7
例如:
我有查询:
(这不是实际的查询,但它适用于示例)
$query = SELECT * FROM table WHERE number = :number OR number = :number
Run Code Online (Sandbox Code Playgroud)
在我的 php 中,我有:
$conn = new PDO($connectionString);
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$statement = $conn->prepare($query);
$statement->bindParam(':number', $someNumber);
$statement->execute();
Run Code Online (Sandbox Code Playgroud)
这会引发错误
COUNT field incorrect or syntax error
Run Code Online (Sandbox Code Playgroud)
问题是, bindParam 只绑定 :number 的第一次出现......并且尝试再次绑定它也不起作用。
有没有办法绑定多个具有相同名称的命名参数?
我试图不使用位置参数使用 ? 反而
是否有任何转换方式
$term = $_GET['p'];
$stmt = $dbh->prepare("
SELECT *
FROM posts
WHERE heading LIKE '%$term%'
OR full_text LIKE '%$term%'
LIMIT 0 , 30
");
$stmt->execute();
$answer = $stmt->fetch(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)
INTO之类的东西
$term = "'%" . $_GET['p'] . "%'";
$stmt = $dbh->prepare("
SELECT *
FROM posts
WHERE heading LIKE :term
OR full_text LIKE :term
LIMIT 0 , 30
");
$stmt->bindParam(":term", $term);
$stmt->execute();
$answer = $stmt->fetch(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)
这样我可以使用bindParam(":term", $term);而不是'%$term%'在查询中?
我已经在bindParam中查看了这些使用LIKE的MySQL PDO查询和 使用bindParam的Mysql,PDO-Like语句.但他们没有给我任何正确的答案.
我对 MySQL 相当陌生,所以如果这听起来像一个愚蠢的问题,我深表歉意。
当我学习 sql 安全性和防止 sql 注入时,我了解到在为这样的 id 获取结果时使用 bindparam 更好:
//Prepare Statement
$stmt = $mysqli->prepare("SELECT * FROM my_table WHERE id=?");
if ( false===$stmt ) {
die('prepare() failed: ' . htmlspecialchars($mysqli->error));
}
$rc = $stmt->bind_param("i", $id);
if ( false===$rc ) {
die('bind_param() failed: ' . htmlspecialchars($stmt->error));
}
$rc = $stmt->execute();
if ( false===$rc ) {
die('execute() failed: ' . htmlspecialchars($stmt->error));
}
// Get the data result from the query. You need to bind results for each column that is …Run Code Online (Sandbox Code Playgroud) 什么人,
我有以下代码:
$selectUserQuery = 'SELECT email_address, password FROM user WHERE email_address = :email_address AND password = :password';
$prepSelectUser = $conn->prepare($selectUserQuery);
/*
* HOW DO I ADD MULTIPLE PARAMETERS TO THIS BINDPARAM() FUNCTION?
*/
$prepSelectUser->bindParam(':email_address', $email, PDO::PARAM_INT);
$prepSelectUser->execute();
$userResult = $prepSelectUser->fetchAll();
$userCount = count($userResult);
Run Code Online (Sandbox Code Playgroud)
如何在bindParam()函数中添加多个参数?